ClipDrawable -- 裁剪图片
InsetDrawable -- 插入图片
RotateDrawable -- 旋转图片
ScaleDrawable -- 缩放图片
ClipDrawable
属性介绍:
clipOrientation -- 裁剪方向
gravity -- 裁剪重心
注意事项:
1、ClioDrawable的显示是需要设置它的Level值,范围是0-10000。
2、根据重心和裁剪方向的不同可以制作不同的裁剪案例。
经典案例:
1、自定义进度条
步骤一:在res/drawable目录下创建clip.xml:
<clip xmlns:android="http://schemas.android.com/apk/res/android" android:clipOrientation="horizontal" android:drawable="@drawable/hensen" android:gravity="left" />
步骤二:在res/layout/activity_bitmap下引用:
<ImageView android:id="@+id/clip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/clip" />步骤三:在代码中的使用:
public class BitmapActivity extends AppCompatActivity { //设置起始level private int mShowLevel = 200; private int mDisapperLever = 10000; private ImageView clip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bitmap); clip = (ImageView) findViewById(R.id.clip); //水平展示,二选一进行演示 clip.post(horizontalShow); //水平消失,二选一进行演示 clip.post(horizontalDisappear); } private Runnable horizontalShow = new Runnable() { @Override public void run() { if (mShowLevel < 10000) { mShowLevel += 200; clip.getDrawable().setLevel(mShowLevel); clip.postDelayed(horizontalShow, 100); } } }; private Runnable horizontalDisappear = new Runnable() { @Override public void run() { if (mDisapperLever > 200) { mDisapperLever -= 200; clip.getDrawable().setLevel(mDisapperLever); clip.postDelayed(horizontalDisappear, 100); } } }; }
步骤四:查看效果图:
水平展示:
水平消失:
InsetDrawable
属性介绍:
insetBottom -- 插入图片的内容与底部边框的距离
insetTop -- 插入图片的内容与顶部边框的距离
insetRight -- 插入图片的内容与右边框的距离
insetLeft -- 插入图片的内容与左边框的距离
步骤一:在res/drawable目录下创建inset.xml:
<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/hensen" android:insetBottom="30dp" android:insetLeft="30dp" android:insetRight="30dp" android:insetTop="30dp" />
步骤二:在res/layout/activity_bitmap下引用:
<ImageView android:id="@+id/clip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/inset" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/hensen" />步骤三:效果展示:上图为insetDrawable,下图为原图
RotateDrawable
属性介绍:
fromDegrees -- 从哪个度数开始
toDegrees -- 到哪个度数结束
pivotX -- X轴的重心
pivotY -- Y轴的重心
注意实项:
1、逆时针旋转的初始Level值是10000,所以图片是倒过来的。
2、这里是以50%x和50%y进行旋转,也就是图片的中心。
经典案例:
1、指南针、表盘、地图指针等旋转物体
步骤一:在res/drawable目录下创建rotate.xml:
<rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_launcher" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="180" />步骤二:在res/layout/activity_bitmap下引用:
<ImageView android:id="@+id/clip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/rotate" />步骤三:在代码中的使用:
public class BitmapActivity extends AppCompatActivity { //设置起始level private int mShowLevel = 200; private int mDisapperLever = 10000; private ImageView clip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bitmap); clip = (ImageView) findViewById(R.id.clip); //顺时针旋转,二选一进行演示 clip.post(horizontalShow); //逆时针旋转,二选一进行演示 clip.post(horizontalDisappear); } private Runnable horizontalShow = new Runnable() { @Override public void run() { if (mShowLevel < 10000) { mShowLevel += 200; clip.getDrawable().setLevel(mShowLevel); clip.postDelayed(horizontalShow, 100); } } }; private Runnable horizontalDisappear = new Runnable() { @Override public void run() { if (mDisapperLever > 200) { mDisapperLever -= 200; clip.getDrawable().setLevel(mDisapperLever); clip.postDelayed(horizontalDisappear, 100); } } };步骤四:查看效果图:
顺时针旋转:
ScaleDrawable
属性介绍:
ScaleGravity -- 缩放重心
ScaleHeight -- 缩放高度
ScaleWidth -- 缩放宽度
注意事项:
1、这里演示的是原图50%大小的缩放效果。
步骤一:在res/drawable目录下创建scale.xml:
<scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_launcher" android:scaleGravity="center" android:scaleHeight="50%" android:scaleWidth="50%" />步骤二:在res/layout/activity_bitmap下引用:
<ImageView android:id="@+id/clip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/scale" />
步骤三:在代码中的使用:
public class BitmapActivity extends AppCompatActivity { //设置起始level private int mShowLevel = 200; private int mDisapperLever = 10000; private ImageView clip; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bitmap); clip = (ImageView) findViewById(R.id.clip); //放大,二选一进行演示 clip.post(horizontalShow); //缩小,二选一进行演示 clip.post(horizontalDisappear); } private Runnable horizontalShow = new Runnable() { @Override public void run() { if (mShowLevel < 10000) { mShowLevel += 200; clip.getDrawable().setLevel(mShowLevel); clip.postDelayed(horizontalShow, 100); } } }; private Runnable horizontalDisappear = new Runnable() { @Override public void run() { if (mDisapperLever > 200) { mDisapperLever -= 200; clip.getDrawable().setLevel(mDisapperLever); clip.postDelayed(horizontalDisappear, 100); } } }; }
步骤四:查看效果图:
放大:
缩小: