Android 動畫流暢改變View背景圓角角度

需求:

如下文件夾需要動態改變背景圓角角度達到前後融合效果。

 

方法介紹:

通常情況下我們給View設置圓角背景只要在xml裏面配置shape drawable背景即可

例如:佈局文件

 <View
    android:id="@+id/folder_page_view_bg"
    android:layout_width="@dimen/folder_paged_view_bg_width"
    android:layout_height="@dimen/folder_paged_view_bg_height"
    android:layout_gravity="center"
    android:background="@drawable/bg_folder_content">
</View>

drawable shape文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/folder_bg_content_radius" />
    <solid android:color="@color/folder_icon_background" />
</shape>

這樣簡單的兩步即可實現背景圓角,但我們需求是動態改變背景圓角角度,所以需要另一種方案

1.首先動態改變我們可以想到使用屬性動畫設置起始和目標角度,動態改變角度。

2.需要動態給View設置背景圖片並且需要動態改變該圖片的角度

最終代碼如下:

private ValueAnimator animatorUpdateFolderBgRadius(View view , int startRadius , int endRadius){
        ValueAnimator valueAnimator = ValueAnimator.ofInt(startRadius, endRadius);
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int value = (int) animation.getAnimatedValue();
                bgDrawable.setCornerRadius(value);
                view.setBackground(bgDrawable);
            }
        });
        return valueAnimator;
    }

我們只需要初始化

GradientDrawable bgDrawable = new GradientDrawable();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章