国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android實現單頁顯示3個Item的ViewPager炫酷切換效果

2019-10-22 18:26:07
字體:
來源:轉載
供稿:網友

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

效果圖

Rotate Y

Android,ViewPager,切換

Rotate Down

Android,ViewPager,切換

Rotate Up

Android,ViewPager,切換

Alpha

Android,ViewPager,切換

ScaleIn

Android,ViewPager,切換

ScaleIn + Alpha + Rotate Down

Android,ViewPager,切換

使用

###(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.長條形小點

Android,ViewPager,切換

<?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武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦江县| 柘城县| 肇东市| 保靖县| 微博| 吉水县| 株洲县| 娄烦县| 江安县| 南安市| 长沙市| 德清县| 新巴尔虎右旗| 芦溪县| 南平市| 秦安县| 板桥市| 玉屏| 永吉县| 山东| 理塘县| 牙克石市| 海安县| 山西省| 巩留县| 仙居县| 金坛市| 增城市| 宣城市| 丰城市| 鄂伦春自治旗| 泗水县| 泰和县| 台北市| 鄯善县| 江川县| 罗平县| 台东市| 米林县| 柏乡县| 英德市|