Android原生ViewPager控件實(shí)現(xiàn)卡片翻動(dòng)效果
本文實(shí)例為大家分享了Android控件ViewPager實(shí)現(xiàn)卡片翻動(dòng)效果的具體代碼,供大家參考,具體內(nèi)容如下
先放一張效果圖:

想要實(shí)現(xiàn)這樣的效果其實(shí)并不是太難,需要對(duì)ViewPager的一些細(xì)節(jié)屬性更深入的了解和認(rèn)識(shí),下面介紹下一個(gè)小demo的實(shí)現(xiàn)過(guò)程:
第一步、創(chuàng)建卡片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>第二步、創(chuàng)建適配器:
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)
}
}第三步、創(chuàng)建放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>第四步、創(chuàng)建viewpager滑動(dòng)切換動(dòng)畫(huà)效果:
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) {
//設(shè)置了內(nèi)間距 有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
}
}
}
第五步、開(kāi)始調(diào)用實(shí)現(xiàn)卡片效果的關(guān)鍵代碼:
class MainActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main7)
//設(shè)置ViewPager中兩頁(yè)之間的距離
// viewpager?.setPageMargin(80)
//自定義ViewPager的頁(yè)面切換動(dòng)畫(huà)
viewpager?.setPageTransformer(false, CardTransformer(applicationContext))
//設(shè)置viewpager預(yù)加載的頁(yè)數(shù)
viewpager?.offscreenPageLimit = 5
viewpager?.currentItem = 12 * 15
viewpager?.setAdapter(CardAdapter(this))
}
}到這里就基本實(shí)現(xiàn)了想要的卡片滑動(dòng)切換和展示效果了!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用RollViewPager實(shí)現(xiàn)輪播圖
- Android使用ViewPager實(shí)現(xiàn)啟動(dòng)引導(dǎo)頁(yè)效果
- Android使用ViewPager完成app引導(dǎo)頁(yè)
- Android ViewPager實(shí)現(xiàn)滑動(dòng)指示條功能
- android使用ViewPager實(shí)現(xiàn)圖片自動(dòng)切換
- Android自定義引導(dǎo)玩轉(zhuǎn)ViewPager的方法詳解
- android使用viewpager計(jì)算偏移量實(shí)現(xiàn)選項(xiàng)卡功能
- Android使用ViewPager快速切換Fragment時(shí)卡頓的優(yōu)化方案
- Android Studio使用ViewPager+Fragment實(shí)現(xiàn)滑動(dòng)菜單Tab效果
- Android用viewPager2實(shí)現(xiàn)UI界面翻頁(yè)滾動(dòng)的效果
相關(guān)文章
Android學(xué)習(xí)筆記——Menu介紹(二)
這次將繼續(xù)上一篇文章沒(méi)有講完的Menu的學(xué)習(xí),上下文菜單(Context menu)和彈出菜單(Popup menu)2014-10-10
Android 10 啟動(dòng)Init進(jìn)程解析
這篇文章主要為大家介紹了Android 10 啟動(dòng)Init進(jìn)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
android實(shí)現(xiàn)密碼框右側(cè)顯示小眼睛
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)密碼框右側(cè)顯示小眼睛,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
Android 動(dòng)態(tài)注冊(cè)監(jiān)聽(tīng)網(wǎng)絡(luò)變化實(shí)例詳解
這篇文章主要介紹了Android 動(dòng)態(tài)注冊(cè)監(jiān)聽(tīng)網(wǎng)絡(luò)變化實(shí)例詳解的相關(guān)資料,這里提供簡(jiǎn)單實(shí)例及實(shí)現(xiàn)效果圖,需要的朋友可以參考下2017-07-07
android開(kāi)發(fā)教程之startActivityForResult使用方法
這篇文章主要介紹了android開(kāi)發(fā)教程之startActivityForResult使用方法,需要的朋友可以參考下2014-03-03

