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侧滑动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习-数据科学】第二节:ipyth
- 下一篇: pytorch图像和张量的相互转换_Da