Android 设置任意View的背景为圆形或圆角

本文为作者原创,允许转载,不过请在文章开头明显处注明链接和出处!!! 谢谢配合~
作者:stars-one
链接:https://www.cnblogs.com/stars-one/p/17758092.html

本篇大约有1167个字,阅读预计需要1.46分钟


原文地址: Android 设置任意View的背景为圆形或圆角 - Stars-One的杂货小窝

我的需求主要还是在SurfaceView需要设置为圆形背景,在网上找了下,发现一个可行方法,做个记录

import android.graphics.Outline;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewOutlineProvider;

public class TextureVideoViewOutlineProvider extends ViewOutlineProvider {
    private float mRadius;

    public TextureVideoViewOutlineProvider(float radius) {
        this.mRadius = radius;
    }

    @Override
    public void getOutline(View view, Outline outline) {
        Rect rect = new Rect();
        view.getGlobalVisibleRect(rect);
        int leftMargin = 0;
        int topMargin = 0;
        Rect selfRect = new Rect(leftMargin, topMargin,
                rect.right - rect.left - leftMargin, rect.bottom - rect.top - topMargin);
        outline.setRoundRect(selfRect, mRadius);
    }
}

使用的时候传任意一个view对象设置即可,如下例子:

mView.setOutlineProvider(new TextureVideoViewOutlineProvider(radius));
mView.setClipToOutline(true);

任何view都可以通过此方法设置,如果想要变为圆形,可以将圆角设置为组件宽度的一半(当然组件的宽高是1:1的正方形)

参考

posted @   Stars-one  阅读(821)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2017-10-11 Android studio快捷键大全 和 eclipse对照(原)
2017-10-11 HelloWorld改编,仿bilibili手机端(一)——侧滑菜单界面布局
2017-10-11 Android开发过程中的坑及解决方法收录(二)
点击右上角即可分享
微信分享提示