Android动态改变shape填充颜色
16lz
2021-01-26
工作中需要依据不同的银行卡显示不同背景,由于银行很多,不可能用图片,想到了用Shape,但数量多,也不可能写死在shape的XML文件中,
<?xml version="1.0" encoding="utf-8"?>
最后决定用代码方式
public static Drawable getBgDrawableByBankNo(Context ctx, String bankNo){ // int strokeWidth = 5; // 0dp 边框宽度 //int roundRadius=TypedValue.applyDimension(); // 10dp 圆角半径 // int strokeColor = Color.parseColor("#2E3135");//边框颜色 int fillColor = Color.parseColor("#971417");//内部填充颜色
int topLeftRadius= DisplayUtil.dip2px(ctx,10); int topRightRadius=topLeftRadius; int bottomRightRadius=0; int bottomLeftRadius=0; GradientDrawable gd = new GradientDrawable();//创建drawable gd.setGradientType(GradientDrawable.RECTANGLE); gd.setColor(fillColor); // gd.setCornerRadius(roundRadius); //1、2两个参数表示左上角,3、4表示右上角,5、6表示右下角,7、8表示左下角 gd.setCornerRadii(new float[] { topLeftRadius, topLeftRadius, topRightRadius, topRightRadius, bottomRightRadius, bottomRightRadius, bottomLeftRadius, bottomLeftRadius }); // gd.setStroke(strokeWidth, strokeColor); return gd; }
使用
iv.setBackgroundDrawable(xxx);
更多相关文章
- Android(安卓)TextView 设置多种颜色
- Flutter -------- BottomNavigationBar 界面切换
- android Material Design Toolbar
- Android信息界面编辑及组合控件的封装
- Android:控件布局(单帧布局)FrameLayout
- android一个LinearLayout中具有几个控件,想要使那几个控件在Linea
- Android实现沉浸式(透明)状态栏适配
- android给图片添加边框
- Android电子书翻页效果实现