巧用ViewPager實(shí)現(xiàn)駕考寶典做題翻頁效果
效果如下所示:

思路:
a.利用ViewPager自帶的動畫效果,略作修改,實(shí)現(xiàn)滑動覆蓋翻頁效果。
b.移動時(shí)加入陰影效果。
1.關(guān)鍵代碼如下所示:
public class ReaderViewPager extends ViewPager {
public ReaderViewPager(Context context) {
this(context, null);
}
public ReaderViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setReadEffect();
setScrollerDuration();
}
private void setScrollerDuration() {
try {
Field field = ViewPager.class.getDeclaredField("mScroller");
field.setAccessible(true);
FixedSpeedScroller scroller = new FixedSpeedScroller(getContext(),
new DecelerateInterpolator());
field.set(this, scroller);
scroller.setmDuration(300);
} catch (Exception e) {
Log.e("@", "", e);
}
}
public void setReadEffect() {
setPageTransformer(true, new PageTransformer() {
private static final float MIN_SCALE = 0.75f;
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight =view.getHeight();
if (position < -1) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
} else if (position <= 0) { // [-1,0]
// Use the default slide transition when moving to the left page
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
} else if (position <= 1) { // (0,1]
// Fade the page out.
// view.setAlpha(1 - position);
//
// // Counteract the default slide transition
view.setAlpha(1);
view.setTranslationX(pageWidth * -position);
//
// // Scale the page down (between MIN_SCALE and 1)
// float scaleFactor = MIN_SCALE
// + (1 - MIN_SCALE) * (1 - Math.abs(position));
// view.setScaleX(scaleFactor);
// view.setScaleY(scaleFactor);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
});
}
}
2.陰影效果添加(其實(shí)陰影是一張圖片,本來是要在ReadViewPager內(nèi)部添加陰影效果,但是不顯示,貌似被ReadViewPage自己遮住了,就用笨辦法實(shí)現(xiàn)了^_^):
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <com.example.zhangyipeng.anwerdemo.view.ReaderViewPager android:id="@+id/readerViewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> <!--陰影--> <ImageView android:id="@+id/shadowView" android:layout_width="20dp" android:layout_height="match_parent" android:background="@mipmap/shadow_right"/> </FrameLayout>
3.陰影隨翻頁而移動效果實(shí)現(xiàn)
readerViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
shadowView.setTranslationX(readerViewPager.getWidth()-positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
4.OK,就是這么簡單,快去做一個(gè)自己的駕考寶典吧 。。。
5.我自己寫了一些簡單的實(shí)現(xiàn)方法,有3個(gè)View的實(shí)現(xiàn)方式,還有其他使用開源控件實(shí)現(xiàn)的,這是地址,歡迎提意見哦
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
- 使用ViewPager實(shí)現(xiàn)左右循環(huán)滑動及滑動跳轉(zhuǎn)
- 自定義RadioButton和ViewPager實(shí)現(xiàn)TabHost帶滑動的頁卡效果
- Android利用ViewPager實(shí)現(xiàn)滑動廣告板實(shí)例源碼
- Android App中使用ViewPager+Fragment實(shí)現(xiàn)滑動切換效果
- Android App中ViewPager所帶來的滑動沖突問題解決方法
- Android中ViewPager帶來的滑動卡頓問題解決要點(diǎn)解析
- android ViewPager實(shí)現(xiàn)滑動翻頁效果實(shí)例代碼
- 一步步實(shí)現(xiàn)Viewpager卡片翻頁效果
- Android?ViewPager實(shí)現(xiàn)左右滑動翻頁效果
相關(guān)文章
Android組件banner實(shí)現(xiàn)左右滑屏效果
這篇文章主要為大家詳細(xì)介紹了Android組件banner實(shí)現(xiàn)左右滑屏效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Android自定義控件之開關(guān)按鈕學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Android自定義開關(guān)按鈕的學(xué)習(xí)筆記,內(nèi)容豐富,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
設(shè)置Android系統(tǒng)永不鎖屏永不休眠的方法
在進(jìn)行Android系統(tǒng)開發(fā)的時(shí)候,有些特定的情況需要設(shè)置系統(tǒng)永不鎖屏,永不休眠。本篇文章給大家介紹Android 永不鎖屏,開機(jī)不鎖屏,刪除設(shè)置中休眠時(shí)間選項(xiàng),需要的朋友一起學(xué)習(xí)吧2016-03-03
OpenGL關(guān)于glStencilFuncSeparate()和glStencilFunc()函數(shù)的區(qū)別講解
今天小編就為大家分享一篇OpenGL關(guān)于glStencilFuncSeparate()和glStencilFunc()函數(shù)的區(qū)別講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04
Android自定義View實(shí)現(xiàn)拼圖小游戲
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)拼圖小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
android開發(fā)教程之textview內(nèi)容超出屏幕寬度顯示省略號
android開發(fā)中用textview顯示內(nèi)容時(shí),顯示內(nèi)容過多可能會折行或顯示不全,那樣效果很不好,我們可以用省略號顯示,下面看設(shè)置方法2014-02-02

