需求:
如下文件夾需要動態改變背景圓角角度達到前後融合效果。
方法介紹:
通常情況下我們給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();