最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)單頁顯示3個Item的ViewPager炫酷切換效果

 更新時間:2017年10月11日 11:11:01   作者:嘉禾世興  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)單頁顯示3個Item的ViewPager炫酷切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

單頁顯示3個Item的ViewPager炫酷切換效果,適用于Banner等。

效果圖

Rotate Y

Rotate Down

Rotate Up

Alpha

ScaleIn

ScaleIn + Alpha + Rotate Down

使用

###(1)引入

compile `com.zhy:magic-viewpager:1.0.1`

###(2)示例

布局文件

<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="160dp"
  android:clipChildren="false"
  android:layout_centerInParent="true"
  android:background="#aadc71ff"
  >
  <android.support.v4.view.ViewPager
    android:id="@+id/id_viewpager"
    android:layout_width="match_parent"
    android:layout_marginLeft="60dp"
    android:clipChildren="false"
    android:layout_marginRight="60dp"
    android:layout_height="120dp"
    android:layout_gravity="center"
    >
  </android.support.v4.view.ViewPager>

</FrameLayout>

注意外層android:layout_centerInParent="true".(貌似其實(shí)沒什么影響

編碼

mViewPager.setPageMargin(20);//設(shè)置page間間距,自行根據(jù)需求設(shè)置
mViewPager.setOffscreenPageLimit(3);//>=3
mViewPager.setAdapter...//寫法不變

//setPageTransformer 決定動畫效果
mViewPager.setPageTransformer(true, new RotateDownPageTransformer());

##目前可選動畫

AlphaPageTransformer
RotateDownPageTransformer
RotateUpPageTransformer
RotateYTransformer
NonPageTransformer
ScaleInTransformer

動畫間可以自由組合,例如:

mViewPager.setPageTransformer(true,new RotateDownPageTransformer(new AlphaPageTransformer(new ScaleInTransformer()))); 

需求:

1.一個頁面顯示三個item

2.viewpager無限循環(huán)

3.定時滑動

4.長條形小點(diǎn)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="#aadc71ff"
  android:clipChildren="false"
  tools:context="com.example.administrator.banner2.MainActivity">


  <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:layout_gravity="center"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_marginTop="10dp"
    android:clipChildren="false"></android.support.v4.view.ViewPager>

  <LinearLayout
    android:id="@+id/dotLayout"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_gravity="bottom"
    android:layout_marginBottom="10dp"
    android:gravity="center"
    android:orientation="horizontal"></LinearLayout>

</FrameLayout>

import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.zhy.magicviewpager.transformer.ScaleInTransformer;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {

  private ViewPager mViewPager;
  private PagerAdapter mAdapter;
  private LinearLayout dotLayout;
  private Timer timer;
  private Handler mHandler = new Handler();

  private int prePosition = 0;

  int[] imgRes = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d,
      R.drawable.e, R.drawable.f, R.drawable.g, R.drawable.h, R.drawable.i};

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mViewPager = (ViewPager) findViewById(R.id.viewpager);
    dotLayout = (LinearLayout) findViewById(R.id.dotLayout);

    initDots();

    mViewPager.setPageMargin(20);
    mViewPager.setOffscreenPageLimit(3);
    mViewPager.setAdapter(mAdapter = new PagerAdapter() {
      @Override
      public Object instantiateItem(ViewGroup container, int position) {
        ImageView view = new ImageView(MainActivity.this);
        view.setScaleType(ImageView.ScaleType.FIT_XY);
        view.setImageResource(imgRes[position % imgRes.length]);
        container.addView(view);
        return view;
      }

      @Override
      public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
      }

      @Override
      public int getCount() {
        return Integer.MAX_VALUE;
      }

      @Override
      public boolean isViewFromObject(View view, Object o) {
        return view == o;
      }
    });
    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
      @Override
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

      }

      @Override
      public void onPageSelected(int position) {
        dotLayout.getChildAt(prePosition).setEnabled(false);
        dotLayout.getChildAt(position % imgRes.length).setEnabled(true);
        prePosition = position % imgRes.length;
      }

      @Override
      public void onPageScrollStateChanged(int state) {

      }
    });
    mViewPager.setPageTransformer(true, new ScaleInTransformer());
    if (null != timer) {
      timer.cancel();
    }
    timer = new Timer();
    timer.schedule(new TimerTask() {
      @Override
      public void run() {
        mHandler.post(new Runnable() {
          @Override
          public void run() {
            mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
          }
        });
      }
    }, 0, 1000);

  }

  private void initDots() {
    if (null != dotLayout) {
      dotLayout.removeAllViews();
    }
    for (int i = 0; i < imgRes.length; i++) {
      ImageView dot = new ImageView(this);
      dot.setEnabled(false);
      dot.setImageResource(R.drawable.dot);
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
      params.leftMargin = 10;
      dot.setLayoutParams(params);
      dotLayout.addView(dot);
    }
    dotLayout.getChildAt(0).setEnabled(true);
  }
}

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_enabled="true">
    <shape android:shape="rectangle">
      <size android:width="15dp" android:height="3dp"></size>
      <corners android:radius="10dp" />
      <solid android:color="#ff0000" />
    </shape>
  </item>
  <item android:state_enabled="false">
    <shape android:shape="rectangle">
      <size android:width="15dp" android:height="3dp"></size>
      <corners android:radius="10dp" />
      <solid android:color="#ffffff" />
    </shape>
  </item>
</selector>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android使用屬性動畫如何自定義倒計時控件詳解

    Android使用屬性動畫如何自定義倒計時控件詳解

    自Android 3.0版本開始,系統(tǒng)給我們提供了一種全新的動畫模式,屬性動畫(property animation),它的功能非常強(qiáng)大,下面這篇文章主要給大家介紹了關(guān)于Android使用屬性動畫如何自定義倒計時控件的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • Android自定義StepView仿外賣配送進(jìn)度

    Android自定義StepView仿外賣配送進(jìn)度

    這篇文章主要為大家詳細(xì)介紹了Android自定義StepView仿外賣配送進(jìn)度,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • kotlin中使用ViewBinding綁定控件的方法

    kotlin中使用ViewBinding綁定控件的方法

    View Binding是Android Studio 3.6推出的新特性,主要用于減少findViewById的冗余代碼,但內(nèi)部實(shí)現(xiàn)還是通過使用findViewById,這篇文章主要介紹了kotlin中使用ViewBinding綁定控件,需要的朋友可以參考下
    2024-03-03
  • Android 添加TextView刪除線(代碼簡單)

    Android 添加TextView刪除線(代碼簡單)

    最近接了個項(xiàng)目,其中有項(xiàng)目需求是這樣的,有這么個需求,就是一個產(chǎn)品下有兩個價格,一個是市場價,一個是銷售價,這時要把市場價添加個刪除線;怎么實(shí)現(xiàn)呢?下面小編給大家分享一段簡單的代碼實(shí)現(xiàn)Android 添加TextView刪除線
    2016-02-02
  • Android ListView數(shù)據(jù)的分批顯示功能

    Android ListView數(shù)據(jù)的分批顯示功能

    本文通過實(shí)例代碼給大家分享了Android ListView數(shù)據(jù)的分批顯示功能,非常不錯具有參考借鑒價值,需要的朋友參考下吧
    2017-04-04
  • Android使用ViewPager實(shí)現(xiàn)啟動引導(dǎo)頁效果

    Android使用ViewPager實(shí)現(xiàn)啟動引導(dǎo)頁效果

    這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實(shí)現(xiàn)啟動引導(dǎo)頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • WebView的介紹與簡單實(shí)現(xiàn)Android和H5互調(diào)的方法

    WebView的介紹與簡單實(shí)現(xiàn)Android和H5互調(diào)的方法

    這篇文章主要給大家介紹了關(guān)于WebView與簡單實(shí)現(xiàn)Android和H5互調(diào)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Android性能優(yōu)化方案詳情

    Android性能優(yōu)化方案詳情

    這篇文章主要給大家分享的是Android項(xiàng)目工程內(nèi)的一些性能優(yōu)化方式,文章圍繞Android項(xiàng)目工程優(yōu)化方式展開內(nèi)容,需要的朋友可以參考一下文章的具體詳情,希望對你有所幫助
    2021-11-11
  • 詳解xamarin Android 實(shí)現(xiàn)ListView萬能適配器

    詳解xamarin Android 實(shí)現(xiàn)ListView萬能適配器

    這篇文章主要介紹了詳解xamarin Android 實(shí)現(xiàn)ListView萬能適配器的相關(guān)資料,這里主要實(shí)現(xiàn)listview 適配器的實(shí)例,需要的朋友可以參考下
    2017-08-08
  • Android?Jetpack組件中LifeCycle作用詳細(xì)介紹

    Android?Jetpack組件中LifeCycle作用詳細(xì)介紹

    Jetpack是谷歌在Google?I/O?2017大會上發(fā)布一套幫助開發(fā)者解決Android架構(gòu)設(shè)計的方案,而Lifecycle是Jetpack?architecture下的一部分,一起來看一下Lifecycle的使用及原理分析
    2022-09-09

最新評論

泾阳县| 蒲城县| 公主岭市| 林西县| 阳高县| 泸州市| 广东省| 武夷山市| 故城县| 福鼎市| 乌什县| 凭祥市| 宜春市| 大安市| 上犹县| 齐齐哈尔市| 高密市| 西吉县| 岑溪市| 奉节县| 丰镇市| 襄垣县| 南召县| 房产| 西乌珠穆沁旗| 长顺县| 新昌县| 略阳县| 尼木县| 曲阳县| 乌兰浩特市| 乐平市| 武鸣县| 江川县| 乡宁县| 渭南市| 稻城县| 盐亭县| 三穗县| 交城县| 沙洋县|