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

Android實現(xiàn)仿微信tab高亮icon粘著手的滑動效果

 更新時間:2016年08月31日 11:28:27   作者:ly513782705  
這篇文章主要為大家詳細介紹了Android實現(xiàn)仿微信tab高亮icon粘著手的滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

微信的主頁分為3個tab,被選中的tab的tabwidget下面會有一個高亮的長條icon,而當切換tab頁面的時候,這個icon不是等到tab切換完成后再出現(xiàn)在當前被選中的tab的tabwidget的下面,而是會隨著viewpager滑動頁面的動作也進行滑動,從前一個tabwidget滑到當前被選中的tabwidget,像viewpager一樣有一種粘著你的手的效果,體驗很贊。上個圖: 

本篇分析如何實現(xiàn)這個效果。 

首先基本知識是,實現(xiàn)不同tab頁之間可以滑動切換需要用到TabPageIndicator + ViewPager,其中TabPageIndicator是一個開源控件,ViewPager是android的support.v4包里面的控件。這個實現(xiàn)這里不進行描述,網(wǎng)上有很多的例子。本篇主要實現(xiàn)高亮icon的粘手效果。 

先看布局: 

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="@dimen/height_56">

    <com.widget.TabPageIndicator
      android:id="@+id/indicator"
      android:layout_width="fill_parent"
      android:layout_height="@dimen/height_56"
      android:background="@drawable/base_action_bar_bg" />
    <ImageView
      android:id="@+id/highlight_tab_iv"
      android:layout_height="wrap_content"
      android:layout_width="90dp"
      android:background="@drawable/base_tabpager_indicator_selected"
      android:layout_alignParentBottom="true"/>

  </RelativeLayout>

如上面的代碼,高亮icon用一個ImageView實現(xiàn),這個ImageView就是那個高亮的長條icon。

然后針對這個ImageView我們需要初始化的時候計算其寬度,保證它的寬度和一個單獨的tabwidget是一樣寬的:

     mHlTabIv = (ImageView)findViewById(R.id.highlight_tab_iv);
    RelativeLayout.LayoutParams mParams =
        (RelativeLayout.LayoutParams)mHlTabIv.getLayoutParams();
    mParams.width = getScreenWidth() / tabCount;
    mTabViewWidth = mParams.width;
    mHlTabIv.setLayoutParams(mParams);

然后,要做到這個ImageView粘手的效果,要怎么做呢,其實android3.0之后添加的api就能很簡單的實現(xiàn),3.0之前的就需要用到nineoldandroids這個第三方的開源框架,這個框架的目的就是讓3.0之前的android版本實現(xiàn)android3.0之后的屬性動畫。這個框架的用法和3.0之后的api用法差不多,所以本篇直接用3.0之后的api。 

mAnimator = mHlTabIv.animate();

 下面是動畫的實現(xiàn)代碼:

    mTabPageIndicator.setOnPageChangeListener(new OnPageChangeListener() {

      @Override
      public void onPageSelected(int index) {
      }

      @Override
      public void onPageScrolled(int currentPos, float percent, int delta) {
        if (!mIsScrolling)
          mAnimator.translationX(mTabViewWidth * currentPos + delta
                      / tabCount).setDuration(50)
              .setListener(new Animator.AnimatorListener() {

                @Override
                public void onAnimationStart(Animator animation) {
                  mIsScrolling = true;
                }

                @Override
                public void onAnimationRepeat(Animator animation) {
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                  mIsScrolling = false;
                }

                @Override
                public void onAnimationCancel(Animator animation) {
                  mIsScrolling = false;
                }
              }).start();
      }

      @Override
      public void onPageScrollStateChanged(int arg0) {
      }
    }); 

如上代碼,只需簡單的幾行代碼就能實現(xiàn)這個順滑的動畫的效果。

 以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 導入takephoto庫編譯失敗與glide庫沖突應排除依賴

    導入takephoto庫編譯失敗與glide庫沖突應排除依賴

    今天小編就為大家分享一篇關(guān)于導入takephoto庫編譯失敗與glide庫沖突應排除依賴的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Jetpack Compose實現(xiàn)動畫效果的方法詳解

    Jetpack Compose實現(xiàn)動畫效果的方法詳解

    compose為支持動畫提供了大量的 api,通過這些 api 我們可以輕松實現(xiàn)動畫效果。本文將為大家介紹利用compose實現(xiàn)的多種動畫效果的示例代碼,需要的可以參考一下
    2022-02-02
  • Android獲取窗體信息的Util方法

    Android獲取窗體信息的Util方法

    這篇文章主要介紹了Android獲取窗體信息的Util方法的相關(guān)資料,需要的朋友可以參考下
    2015-07-07
  • Android中傳遞圖片的2種方法

    Android中傳遞圖片的2種方法

    這篇文章主要介紹了Android中傳遞圖片的2種方法,本文分別給出種方法的操作代碼實例,需要的朋友可以參考下
    2015-04-04
  • Android中TextureView與SurfaceView用法區(qū)別總結(jié)

    Android中TextureView與SurfaceView用法區(qū)別總結(jié)

    TextureView和SurfaceView都是繼承自View類的,TextureView在Andriod4.0之后才引入的,SurfaceView不能加上動畫、平移、縮放,TextureView可以但有1-3幀的延遲
    2018-04-04
  • Android?FileProvider使用教程

    Android?FileProvider使用教程

    主要摘要關(guān)鍵知識點和記錄我的學習思路及驗證結(jié)論,可以幫助讀者比較全面的認識FileProvider,F(xiàn)ileProvider是特殊的ContentProvider,目標是在為保護隱私和數(shù)據(jù)安全而加強應用沙箱機制的同時,支持在應用間共享文件
    2023-03-03
  • Android Content Provider詳解及示例代碼

    Android Content Provider詳解及示例代碼

    本文主要講解Android Content Provider,這里提供相關(guān)文檔資料,并附有實現(xiàn)代碼和實現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • android頂部(toolbar)搜索框?qū)崿F(xiàn)代碼

    android頂部(toolbar)搜索框?qū)崿F(xiàn)代碼

    這篇文章主要介紹了android頂部(toolbar)搜索框?qū)崿F(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android 百度地圖marker中圖片不顯示的解決方法(推薦)

    Android 百度地圖marker中圖片不顯示的解決方法(推薦)

    下面小編就為大家分享一篇Android 百度地圖marker中圖片不顯示的解決方法(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android?Studio實現(xiàn)簡易計算器App?(Java語言版)

    Android?Studio實現(xiàn)簡易計算器App?(Java語言版)

    這篇文章主要為大家詳細介紹了Android?Studio實現(xiàn)簡易計算器App,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論

英德市| 东丽区| 南城县| 永春县| 安庆市| 黎城县| 靖远县| 宕昌县| 漯河市| 新和县| 桑日县| 濮阳市| 台江县| 海口市| 南靖县| 古蔺县| 务川| 石阡县| 集安市| 宜黄县| 德江县| 麟游县| 惠东县| 乌什县| 临城县| 斗六市| 夏河县| 申扎县| 长沙县| 福安市| 沾化县| 乌拉特后旗| 类乌齐县| 侯马市| 昭苏县| 台南市| 九龙县| 民权县| 和静县| 德兴市| 噶尔县|