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

首頁 > 系統 > Android > 正文

巧用ViewPager實現駕考寶典做題翻頁效果

2019-12-12 03:26:47
字體:
來源:轉載
供稿:網友

效果如下所示:

 

思路:

a.利用ViewPager自帶的動畫效果,略作修改,實現滑動覆蓋翻頁效果。

b.移動時加入陰影效果。

1.關鍵代碼如下所示:

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內部添加陰影效果,但是不顯示,貌似被ReadViewPage自己遮住了,就用笨辦法實現了^_^):

<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.陰影隨翻頁而移動效果實現

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.我自己寫了一些簡單的實現方法,有3個View的實現方式,還有其他使用開源控件實現的,這是地址,歡迎提意見哦

GitHub項目demo地址

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐梓县| 开化县| 民县| 鹤壁市| 滁州市| 福贡县| 新余市| 桑植县| 广汉市| 澄城县| 白朗县| 宁明县| 西盟| 许昌市| 秭归县| 会宁县| 林口县| 梁山县| 玉林市| 宜州市| 惠安县| 武清区| 沙雅县| 清新县| 平顶山市| 鄄城县| 保山市| 柯坪县| 正镶白旗| 绥滨县| 大渡口区| 黑河市| 马鞍山市| 扶风县| 辽源市| 长寿区| 射阳县| 舒兰市| 呼图壁县| 马山县| 绿春县|