巧用ViewPager實現(xiàn)駕考寶典做題翻頁效果
效果如下所示:
思路:
a.利用ViewPager自帶的動畫效果,略作修改,實現(xiàn)滑動覆蓋翻頁效果。
b.移動時加入陰影效果。
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.陰影效果添加(其實陰影是一張圖片,本來是要在ReadViewPager內(nèi)部添加陰影效果,但是不顯示,貌似被ReadViewPage自己遮住了,就用笨辦法實現(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.陰影隨翻頁而移動效果實現(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,就是這么簡單,快去做一個自己的駕考寶典吧 。。。
5.我自己寫了一些簡單的實現(xiàn)方法,有3個View的實現(xiàn)方式,還有其他使用開源控件實現(xiàn)的,這是地址,歡迎提意見哦
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 使用ViewPager實現(xiàn)左右循環(huán)滑動及滑動跳轉(zhuǎn)
- 自定義RadioButton和ViewPager實現(xiàn)TabHost帶滑動的頁卡效果
- Android利用ViewPager實現(xiàn)滑動廣告板實例源碼
- Android App中使用ViewPager+Fragment實現(xiàn)滑動切換效果
- Android App中ViewPager所帶來的滑動沖突問題解決方法
- Android中ViewPager帶來的滑動卡頓問題解決要點解析
- android ViewPager實現(xiàn)滑動翻頁效果實例代碼
- 一步步實現(xiàn)Viewpager卡片翻頁效果
- Android?ViewPager實現(xiàn)左右滑動翻頁效果
相關(guān)文章
Android自定義控件之開關(guān)按鈕學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Android自定義開關(guān)按鈕的學(xué)習(xí)筆記,內(nèi)容豐富,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05設(shè)置Android系統(tǒng)永不鎖屏永不休眠的方法
在進(jìn)行Android系統(tǒng)開發(fā)的時候,有些特定的情況需要設(shè)置系統(tǒng)永不鎖屏,永不休眠。本篇文章給大家介紹Android 永不鎖屏,開機不鎖屏,刪除設(shè)置中休眠時間選項,需要的朋友一起學(xué)習(xí)吧2016-03-03OpenGL關(guān)于glStencilFuncSeparate()和glStencilFunc()函數(shù)的區(qū)別講解
今天小編就為大家分享一篇OpenGL關(guān)于glStencilFuncSeparate()和glStencilFunc()函數(shù)的區(qū)別講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04android開發(fā)教程之textview內(nèi)容超出屏幕寬度顯示省略號
android開發(fā)中用textview顯示內(nèi)容時,顯示內(nèi)容過多可能會折行或顯示不全,那樣效果很不好,我們可以用省略號顯示,下面看設(shè)置方法2014-02-02