單頁顯示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".(貌似其實沒什么影響)
編碼
mViewPager.setPageMargin(20);//設置page間間距,自行根據需求設置mViewPager.setOffscreenPageLimit(3);//>=3mViewPager.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無限循環
3.定時滑動
4.長條形小點
	
<?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>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答