日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nineoldandroid使用_nineoldandroid 详细使用并且实现drawerlayout侧滑动画

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nineoldandroid使用_nineoldandroid 详细使用并且实现drawerlayout侧滑动画 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nineoldandroid.view.ViewHelpe是一個為了兼容3.0以下的一個動畫開源庫

相關函數解讀:(第一個參數都為動畫對象,第二個為動畫屬性值的變化表達式)

ViewHelper.setTranslationX(,);//x方向平移

ViewHelper.setTranslationY(,);

ViewHelper.setScaleX(,);x方向變化大小

ViewHelper.setScaleY(,);

ViewHelper.setAlpha(,);透明度變化

ViewHelper.setPivotY(,);大小變化x方向的中心

ViewHelper.setPivotX(,);

例如在drawerlayout中通過監聽drawerlayout的滑動來設置動畫(這里的監聽器開始設置成了set。。。已經過時,兩者沒什么使用上的區別,只是會判斷一次是否為空)

mDrawerLayout.addDrawerListener(new DrawerListener()//設置抽提監聽事件,添加監聽器

{public void onDrawerStateChanged(int newState)//狀態監聽

{

}public void onDrawerSlide(View drawerView, float slideOffset)//滑動監聽

{

View mContent= mDrawerLayout.getChildAt(0);//返回抽屜布局中的索引為0的子view

View mMenu =drawerView;float scale = 1 - slideOffset;//偏移量導致scale從1.0-0.0

float rightScale = 0.8f + scale * 0.2f;//將內容區域從1.0-0.0轉化為1.0-0.8

if (drawerView.getTag().equals("LEFT"))

{float leftScale = 1 - 0.3f * scale;//0.7-1.0

ViewHelper.setScaleX(mMenu, leftScale);

ViewHelper.setScaleY(mMenu, leftScale);

ViewHelper.setAlpha(mMenu,0.6f + 0.4f * (1 - scale));//開始這里設置成了這樣,導致背景透明度有1.0-0.6//ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * scale);

ViewHelper.setTranslationX(mContent,

mMenu.getMeasuredWidth()* (1 -scale));

ViewHelper.setPivotX(mContent,0);

ViewHelper.setPivotY(mContent,

mContent.getMeasuredHeight()/ 2);

mContent.invalidate();

ViewHelper.setScaleX(mContent, rightScale);

ViewHelper.setScaleY(mContent, rightScale);

}else{

ViewHelper.setTranslationX(mContent,-mMenu.getMeasuredWidth() *slideOffset);//設置大小變化的中心

ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());

ViewHelper.setPivotY(mContent,

mContent.getMeasuredHeight()/ 2);

mContent.invalidate();

ViewHelper.setScaleX(mContent, rightScale);

ViewHelper.setScaleY(mContent, rightScale);

}

}public voidonDrawerOpened(View drawerView)

{

}public voidonDrawerClosed(View drawerView)

{

mDrawerLayout.setDrawerLockMode(

DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);

}

});

關于滑動中動畫屬性的轉化:

1、首先是內容區域的縮放比例計算:

我們準備讓在菜單出現的過程中,讓內容區域從1.0~0.8進行變化

float rightScale = 0.8f + scale * 0.2f; (scale 從1到0 )

2、菜單的縮放比例計算

菜單大概縮放變化是0.7~1.0

float leftScale = 1 - 0.3f * scale;

3、菜單的透明度比例:

我們設置為0.6~1.0;即:0.6f + 0.4f * (1 - scale)

總結

以上是生活随笔為你收集整理的nineoldandroid使用_nineoldandroid 详细使用并且实现drawerlayout侧滑动画的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。