咨询热线:023-63853373

24小时热线:13372636650

新闻中心

首页

产品方案

服务项目

开发案例
新闻资讯
联系我们

【Android】View的裁剪显示

2020/02/07  来源:乐潮信息

Clipping 可以让我们改变一个视图的外形。要使用Clipping,首先需要使用ViewOutlineProvider来修改outline,然后再通过setOutlineProvider将outline作用给视图。

通过下面这个例子向大家介绍clipping的用法,将一个正方形的textview裁剪成一个圆角方形和一个圆。布局代码如下:

 

<TextView
    android:id="@+id/tv_circle_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:gravity="center"
    android:padding="20dp"
    android:background="#ffffff"
    android:text="裁剪一" />
<TextView
    android:id="@+id/tv_circle_2"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="10dp"
    android:background="#ff0000"
    android:elevation="1dp"
    android:gravity="center"
    android:text="裁剪二" />

<ImageView
    android:id="@+id/tv_circle_3"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="10dp"
    android:elevation="1dp"
    android:gravity="center"
    android:src="@drawable/test" />
<ImageView
    android:id="@+id/tv_circle_4"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_margin="10dp"
    android:elevation="1dp"
    android:gravity="center"
    android:src="@drawable/test" />

 

程序代码如下所示:

//设置outline 裁剪
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void initCircle() {
    //获取outline
    ViewOutlineProvider viewOutlineProvider1 = new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            //修改outline为特定形状,上下左右相当于padding
            outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 40);
        }
    };
    //获取outline
    ViewOutlineProvider viewOutlineProvider2 = new ViewOutlineProvider() {
        @Override
        public void getOutline(View view, Outline outline) {
            //修改outline为特定形状
            outline.setOval(0, 0, view.getWidth(), view.getHeight());
        }
    };
    //重新设置形状
    tvCircle1.setOutlineProvider(viewOutlineProvider1);
    tvCircle2.setOutlineProvider(viewOutlineProvider2);
    tvCircle3.setOutlineProvider(viewOutlineProvider1);
    tvCircle4.setOutlineProvider(viewOutlineProvider2);
    //添加背景或者是Imageview的时候失效,添加如下设置
    tvCircle1.setClipToOutline(true);
    tvCircle2.setClipToOutline(true);
    tvCircle3.setClipToOutline(true);
    tvCircle4.setClipToOutline(true);
}

 

其中前两个是textview,在代码中为其设置ViewOutlineProvider ,ViewOutlineProvider 中只有一个方法getOutline,设置圆角矩形的时候用outline.setRoundRect,里面的参数是四周的距离,最后是圆角的半径。设置圆形的时候是outline.setOval。

同时,还可以设置imageview的显示形状。

注意,当设置背景色和图片无效的时候,添加setClipToOutline(true)。效果如下图:

乐潮信息www.leco-tec.com

重庆APP开发多少钱

根据app应用软件开发的难易程度可以将重庆app开发价格大致分为一下几类

手机app定制开发要根据用户市场来

重庆app开发公司乐潮科技认为,随着移动互联网技术的不断发展,手机app开发现在已经

开发三级分销系统APP的好处

重庆APP开发乐潮科技认为:三级分销系统是各路商家的最爱,这句话说的绝对没毛病。

点击我更换图片

公司地址:

重庆市渝北区冉家坝时光城写字楼

联系方式:

023-63853373

13372636650(24h热线)

重庆市渝北区冉家坝时光城写字楼

© 2020 乐潮信息

渝ICP备15006414号-2      渝公网安备 50011202502110号