我是靠谱客的博主 诚心小鸭子,最近开发中收集的这篇文章主要介绍Android动态改变shape填充颜色,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

工作中需要依据不同的银行卡显示不同背景,由于银行很多,不可能用图片,想到了用Shape,但数量多,也不可能写死在shape的XML文件中,

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#971417" ></solid>
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/>
<!-- <stroke android:width="1dp" android:color="#971417" />-->
</shape>

 最后决定用代码方式

 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动态改变shape填充颜色的全部内容,希望文章能够帮你解决Android动态改变shape填充颜色所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部