最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android CardView+ViewPager實(shí)現(xiàn)ViewPager翻頁(yè)動(dòng)畫(huà)的方法

 更新時(shí)間:2018年06月14日 14:52:18   作者:Abby代黎明  
本篇文章主要介紹了Android CardView+ViewPager實(shí)現(xiàn)ViewPager翻頁(yè)動(dòng)畫(huà)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Viewpager通俗一點(diǎn)講就是一個(gè)允許左右翻轉(zhuǎn)帶數(shù)據(jù)的頁(yè)面的布局管理器,經(jīng)常用來(lái)連接Fragment,它很方便管理每個(gè)頁(yè)面的生命周期,使用ViewPager管理Fragment是標(biāo)準(zhǔn)的適配器實(shí)現(xiàn)。最常用的實(shí)現(xiàn)一般有FragmentPagerAdapter和FragmentStatePagerAdapter。自行百度它的用法。今天我們要實(shí)現(xiàn)的是下面的效果:

NO PICTURE TALK A JB

要實(shí)現(xiàn)圖中的效果需要以下幾個(gè)知識(shí)點(diǎn):
1.clipChildren屬性
2.一個(gè)頁(yè)面顯示多個(gè)ViewPager的Item
3.自定義PagerTransformer
4.ViewPager結(jié)合CardView

1.clipChildren 屬性

clipchildren :是否限制子View在其范圍內(nèi),當(dāng)我們將其值設(shè)置為false后那么在子控件的高度高于父控件時(shí)也會(huì)完全顯示,而不會(huì)被壓縮,(上面中間的按鈕超過(guò)上面的陰影線(xiàn),依舊可以正常顯示),默認(rèn)的時(shí)候是true。

了解了這個(gè)屬性就可以讓一個(gè)頁(yè)面顯示多個(gè)Viewpager的Item

2.一個(gè)頁(yè)面顯示多個(gè)ViewPager的Item

直接在xml布局文件中配置:android:clipToPadding="false"

<?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/background">
  <!--1. 中間可滑動(dòng)的viewPager-->
  <android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:clipToPadding="false"
    android:paddingEnd="48dp"
    android:paddingLeft="48dp"
    android:paddingRight="48dp"
    android:paddingStart="48dp" />
  <RelativeLayout
    android:id="@+id/bottom_layout"
    android:layout_width="match_parent"
    android:layout_height="55dp"
    android:layout_alignParentBottom="true">
    <ImageView
      android:id="@+id/img_like"
      android:layout_width="38dp"
      android:layout_height="38dp"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:src="@drawable/icon2" />
  </RelativeLayout>
  <TextView
    android:id="@+id/indicator_tv"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:layout_above="@+id/bottom_layout"
    android:layout_centerHorizontal="true"
    android:gravity="center_vertical"
    android:text="1/199"
    android:textColor="#ffffff"
    android:textSize="16sp" />
  <!--4. 頂部的titleBar-->
  <LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <!--沉浸式activity,這個(gè)view是用來(lái)占位的-->
    <View
      android:id="@+id/position_view"
      android:layout_width="1px"
      android:layout_height="1px" />
    <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="55dp"
      android:orientation="horizontal">
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="地圖操作"
        android:textColor="#ffffff"
        android:textSize="16sp" />
    </RelativeLayout>
  </LinearLayout>
</RelativeLayout>

3.自定義ViewPager翻頁(yè)動(dòng)畫(huà)

直接上代碼

public class CustPagerTransformer implements ViewPager.PageTransformer {
  private int maxTranslateOffsetX;
  private ViewPager viewPager;
  public CustPagerTransformer(Context context) {
    this.maxTranslateOffsetX = dp2px(context, 180);
  }
  public void transformPage(View view, float position) {
    if (viewPager == null) {
      viewPager = (ViewPager) view.getParent();
    }
    int leftInScreen = view.getLeft() - viewPager.getScrollX();
    int centerXInViewPager = leftInScreen + view.getMeasuredWidth() / 2;
    int offsetX = centerXInViewPager - viewPager.getMeasuredWidth() / 2;
    float offsetRate = (float) offsetX * 0.38f / viewPager.getMeasuredWidth();
    float scaleFactor = 1 - Math.abs(offsetRate);
    if (scaleFactor > 0) {
      view.setScaleX(scaleFactor);
      view.setScaleY(scaleFactor);
      view.setTranslationX(-maxTranslateOffsetX * offsetRate);
    }
  }
  /**
   * dp和像素轉(zhuǎn)換
   */
  private int dp2px(Context context, float dipValue) {
    float m = context.getResources().getDisplayMetrics().density;
    return (int) (dipValue * m + 0.5f);
  }
}

使用方法

// 1. viewPager添加parallax效果,使用PageTransformer就足夠了
   viewPager.setPageTransformer(false, new CustPagerTransformer(this));

4.CardView 與Viewpager聯(lián)合使用

先看viewpager的一個(gè)item布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <cn.yznu.gdmapoperate.ui.widget.AspectRatioCardView
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    app:cardCornerRadius="5dp"
    app:cardElevation="6dp"
    app:cardMaxElevation="6dp">
    <ImageView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_gravity="center"
      android:background="@drawable/bg_map"
      android:contentDescription="@string/app_name"
      android:scaleType="centerCrop" />
    <ImageView
      android:id="@+id/image"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:contentDescription="@string/app_name"
      android:scaleType="centerCrop"
      android:src="@drawable/map" />
    <TextView
      android:id="@+id/txt_title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_gravity="bottom|center"
      android:padding="5dp"
      android:text="@string/app_name"
      android:textColor="#12edf0"
      android:textSize="15sp" />
  </cn.yznu.gdmapoperate.ui.widget.AspectRatioCardView>
</FrameLayout>

使用ViewPager管理Fragment是標(biāo)準(zhǔn)的適配器實(shí)現(xiàn),所以將這個(gè)xml作為fragment的布局就行了,就是這么簡(jiǎn)單。

紅紅火火恍恍惚惚,貌似完成了,就是這么簡(jiǎn)單。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ReactNative Alert詳解及實(shí)例代碼

    ReactNative Alert詳解及實(shí)例代碼

    這篇文章主要介紹了ReactNative Alert詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • android完美實(shí)現(xiàn) 拍照 選擇圖片 剪裁等代碼分享

    android完美實(shí)現(xiàn) 拍照 選擇圖片 剪裁等代碼分享

    本文給大家分享了2個(gè)安卓實(shí)現(xiàn)實(shí)現(xiàn) 拍照 選擇圖片 剪裁等的代碼,都是從正式項(xiàng)目中提取出來(lái)了,非常實(shí)用,有需要的小伙伴可以參考下。
    2016-01-01
  • Android 沉浸式狀態(tài)欄與隱藏導(dǎo)航欄實(shí)例詳解

    Android 沉浸式狀態(tài)欄與隱藏導(dǎo)航欄實(shí)例詳解

    沉浸式狀態(tài)欄是指狀態(tài)欄與ActionBar顏色相匹配,隱藏導(dǎo)航欄,就是將導(dǎo)航欄隱藏,去掉下面的黑條。下面通過(guò)實(shí)例給大家詳解android沉浸式狀態(tài)欄與隱藏導(dǎo)航欄,感興趣的朋友一起看看
    2017-07-07
  • Android如何監(jiān)聽(tīng)屏幕旋轉(zhuǎn)

    Android如何監(jiān)聽(tīng)屏幕旋轉(zhuǎn)

    這篇文章主要介紹了如何監(jiān)聽(tīng)Android屏幕旋轉(zhuǎn),幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下
    2021-03-03
  • Android中快速便捷的實(shí)現(xiàn)圓角按鈕方法詳解

    Android中快速便捷的實(shí)現(xiàn)圓角按鈕方法詳解

    圓角按鈕在我們現(xiàn)在的界面中常常會(huì)用到,最近在開(kāi)發(fā)中就又遇到了,所以想著有沒(méi)有更快速更便捷的實(shí)現(xiàn)方法呢,所以就有了這篇文章,本文主要給大家介紹了關(guān)于Android中如何快速便捷的實(shí)現(xiàn)圓角按鈕的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • Matrix的set,pre,post調(diào)用順序詳解

    Matrix的set,pre,post調(diào)用順序詳解

    下面小編就為大家?guī)?lái)一篇Matrix的set,pre,post調(diào)用順序詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • 移動(dòng)端html5圖片上傳方法【更好的兼容安卓IOS和微信】

    移動(dòng)端html5圖片上傳方法【更好的兼容安卓IOS和微信】

    這篇文章主要為大家詳細(xì)介紹了移動(dòng)端html5圖片上傳方法,更好的兼容安卓IOS和微信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android實(shí)現(xiàn)接近傳感器

    Android實(shí)現(xiàn)接近傳感器

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)接近傳感器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Flutter中顯示條件Widget的實(shí)現(xiàn)方式

    Flutter中顯示條件Widget的實(shí)現(xiàn)方式

    在 Flutter 日常開(kāi)發(fā)中經(jīng)常會(huì)遇見(jiàn)這樣的需求,如: 只有用戶(hù)是 VIP 時(shí),才能展示某個(gè)入口或者某個(gè)模塊,這樣的需求在開(kāi)發(fā)業(yè)務(wù)需求中多如牛毛,那你是如何來(lái)優(yōu)雅的實(shí)現(xiàn)的呢,本文將給大家介紹Flutter中顯示條件Widget的實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-04-04
  • Android拍照得到全尺寸圖片并進(jìn)行壓縮

    Android拍照得到全尺寸圖片并進(jìn)行壓縮

    這篇文章主要介紹了Android拍照得到全尺寸圖片并進(jìn)行壓縮 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12

最新評(píng)論

澄城县| 长宁区| 汶川县| 盐城市| 清徐县| 登封市| 浙江省| 类乌齐县| 陵川县| 桐庐县| 宁安市| 象山县| 黄石市| 鱼台县| 大荔县| 沈丘县| 龙游县| 望都县| 利辛县| 凤城市| 仪征市| 黄骅市| 昂仁县| 抚松县| 得荣县| 霍林郭勒市| 安图县| 广宁县| 门源| 景宁| 长春市| 泽库县| 灵石县| 新干县| 新化县| 城固县| 黄大仙区| 凤凰县| 紫阳县| 芷江| 榆中县|