Clipping可以让我们改变一个视图的外形。要使用Clipping,首先需要使用ViewOutineProvider来修改outline,然后再通过setOutlineProvider将outline作用给视图。
利用裁剪来实现一个圆角矩形的TextView和一个圆形的ImageView。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <TextView android:id="@+id/tv" android:layout_width="96dp" android:layout_height="96dp" android:text="Hello World!" android:background="@color/colorAccent" /> <ImageView android:id="@+id/iv" android:layout_width="96dp" android:layout_height="96dp" android:src="@drawable/touxiang" />
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| final TextView tv = (TextView) findViewById(R.id.tv);
ViewOutlineProvider viewOutlineProvider1 = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setRoundRect(0,0,view.getWidth(),view.getHeight(),30); } };
tv.setOutlineProvider(viewOutlineProvider1); tv.setClipToOutline(true);
final ImageView imageView = (ImageView) findViewById(R.id.iv);
ViewOutlineProvider viewOutlineProvider2 = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setOval(0,0,view.getWidth(),view.getHeight()); } };
imageView.setOutlineProvider(viewOutlineProvider2); imageView.setClipToOutline(true);
|
效果图:

setClipToOutline方法可以在前设置也可以在后设置,如果设置为false则表示禁止裁剪,setOutlineProvider方法将无效。
注意:
- ViewOutlineProvider是Android 5.x引入的新特性,用于实现View的阴影和轮廓,所以如果我们的应用有5.0以下的设备的话,对于利用ViewOutlineProvider实现的效果,需要进行版本的适配。
- 如果我们的应用设置了android:hardwareAccelerated=”false”,以上方式将无效。
参考链接:
《Android群英传》
Android 5.0新特性学习–视图轮廓
上一篇:CardView
下一篇:Dart编程语言入门