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

首頁 > 系統 > Android > 正文

Android原生ViewPager控件實現卡片翻動效果

2019-10-21 21:45:47
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android控件ViewPager實現卡片翻動效果的具體代碼,供大家參考,具體內容如下

先放一張效果圖: 

Android,ViewPager,卡片翻動

想要實現這樣的效果其實并不是太難,需要對ViewPager的一些細節屬性更深入的了解和認識,下面介紹下一個小demo的實現過程: 

第一步、創建卡片viewpager適配器的itemview的布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:background="@drawable/bitmap"  android:gravity="center">  <ImageView    android:id="@+id/home_viewpage_item_img"    android:paddingBottom="@dimen/dp_82"    android:paddingTop="@dimen/dp_82"    android:paddingLeft="@dimen/dp_44"    android:paddingRight="@dimen/dp_44"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:src="@drawable/ic_launcher" /></RelativeLayout>

第二步、創建適配器:

class CardAdapter(var context: Context) : PagerAdapter() {  val horoscopestrImgs = intArrayOf(R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,      R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher)  override fun isViewFromObject(view: View, `object`: Any): Boolean {    return view === `object`  }  override fun getCount(): Int {    return 12 * 30  }  override fun instantiateItem(container: ViewGroup, position: Int): Any {    val view = LayoutInflater.from(context).inflate(R.layout.home_viewpage_item, null)    view.home_viewpage_item_img.setImageResource(horoscopestrImgs.get(position%12))    container.addView(view)    return view  }  override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {    container.removeView(`object` as View)  }}

第三步、創建放viewpager控件的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:background="#fff"  android:layout_height="match_parent" >  <android.support.v4.view.ViewPager    android:id="@+id/viewpager"    android:layout_width="wrap_content"    android:layout_height="match_parent"    android:layout_centerInParent="true"    android:overScrollMode="never"    android:paddingBottom="@dimen/dp_240"    android:paddingLeft="50dp"    android:paddingRight="50dp"    android:paddingTop="@dimen/dp_60" /></RelativeLayout>

第四步、創建viewpager滑動切換動畫效果:

class CardTransformer(var context: Context) :ViewPager.PageTransformer{  val TAG = "CardTransformer"  private val MAX_SCALE = 1.0f  private val MIN_SCALE = 0.85f//0.85f  var animator:ObjectAnimator?=null  override fun transformPage(page: View, position: Float) {    //設置了內間距  有0.15的偏差     var pos=position -0.15.toFloat()    if ( pos <= 1) {      val scaleFactor = MIN_SCALE + (1 - Math.abs(pos)) * (MAX_SCALE - MIN_SCALE)      page.scaleX = scaleFactor //縮放效果      if (pos > 0) {        page.translationX = -scaleFactor * 2      } else if (pos < 0 && pos > -1) {        page.translationX = scaleFactor * 2      }      page.scaleY = scaleFactor    } else {      page.scaleX = MIN_SCALE      page.scaleY = MIN_SCALE    }  }}

第五步、開始調用實現卡片效果的關鍵代碼:

class MainActivity : Activity() {  override fun onCreate(savedInstanceState: Bundle?) {    super.onCreate(savedInstanceState)    setContentView(R.layout.activity_main7)    //設置ViewPager中兩頁之間的距離    // viewpager?.setPageMargin(80)    //自定義ViewPager的頁面切換動畫    viewpager?.setPageTransformer(false, CardTransformer(applicationContext))    //設置viewpager預加載的頁數    viewpager?.offscreenPageLimit = 5    viewpager?.currentItem = 12 * 15    viewpager?.setAdapter(CardAdapter(this))  }}

到這里就基本實現了想要的卡片滑動切換和展示效果了!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉兴市| 福海县| 大洼县| 山阴县| 大悟县| 比如县| 达州市| 彭水| 弥渡县| 合肥市| 上高县| 益阳市| 高清| 巩义市| 星子县| 桐柏县| 江陵县| 广水市| 沙雅县| 茂名市| 淳安县| 宁陕县| 科技| 永济市| 彭阳县| 平罗县| 沽源县| 延吉市| 兴义市| 盐津县| 东台市| 澳门| 桃源县| 兴义市| 绥芬河市| 西峡县| 洛隆县| 洛隆县| 抚宁县| 永昌县| 苗栗市|