clip.gif自带图片的类型真的很多,也很方便,自带动画效果,今天分享这个
clipDrawable
使用步骤
- 在
drawable
目录下新建一个clip_img.xml
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/header"
android:clipOrientation="vertical"
android:gravity="top"
/>
这里这个clipOrientation
有垂直(vertical),水平(horizontal)两种。gravity
有很多种可选的值。【top,bottom,left.....】
- 在
layout
中引入使用
android:src="@drawable/clip_img"
完整:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="15dp">
<LinearLayout
android:gravity="center_vertical"
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:layout_marginLeft="50dp"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:onClick="start"
android:text="start"/>
</LinearLayout>
<ImageView
android:layout_marginTop="30dp"
android:id="@+id/iv_show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/clip_img"
/>
</LinearLayout>
- 在
Activity
中使用
public class MainActivity extends AppCompatActivity {
ImageView mImageShow;
TextView mTvShow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageShow = findViewById(R.id.iv_show);
mTvShow = findViewById(R.id.tv_info);
}
public void start(View view){
ValueAnimator animator = ValueAnimator.ofInt(0,100);
animator.setDuration(3000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = animation.getAnimatedFraction();
float scale = value/1f;
ClipDrawable drawable = (ClipDrawable) mImageShow.getBackground();
drawable.setLevel((int) (10000*scale));
DecimalFormat format = new DecimalFormat("0.00");
mTvShow.setText(format.format(scale*100f)+"%");
}
});
animator.start();
}
}
完成。
网友评论