网站建设维护学习,网站内部推广,WordPress关联搜索插件,深圳网站开发哪家服务专业开发中经常需要使用Shape和Selector#xff0c;如果每个都用xml设置的话#xff0c;会占用apk大小#xff0c;同时命名多了也会混乱#xff0c;使用代码来设置会方便很多。 需要用到2个类#xff1a;GradientDrawable和StateListDrawable 相关API#xff1a; setColor(rg…开发中经常需要使用Shape和Selector如果每个都用xml设置的话会占用apk大小同时命名多了也会混乱使用代码来设置会方便很多。 需要用到2个类GradientDrawable和StateListDrawable 相关API setColor(rgb); //填充颜色setGradientType(GradientDrawable.RECTANGLE); //shape矩形setCornerRadius(radius); //四周圆角半径setStroke(1,strokenColor); //边框厚度与颜色 下面提供一个工具类以及使用代码 【工具类DrawableUtils】 public class DrawableUtils { public static GradientDrawable getDrawable(int rgb,float radius){ GradientDrawable gradientDrawable new GradientDrawable(); gradientDrawable.setColor(rgb);//设置颜色 gradientDrawable.setGradientType(GradientDrawable.RECTANGLE);//设置显示的样式 gradientDrawable.setCornerRadius(radius);//设置圆角的半径 gradientDrawable.setStroke(DensityUtil.dip2px(1),rgb);//描边 return gradientDrawable; } public static StateListDrawable getSelector(Drawable normalDrawable,Drawable pressDrawable) { StateListDrawable stateListDrawable new StateListDrawable(); //给当前的颜色选择器添加选中图片指向状态未选中图片指向状态 stateListDrawable.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, pressDrawable); stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, normalDrawable); //设置默认状态 stateListDrawable.addState(new int[]{}, normalDrawable); return stateListDrawable; }} 【使用】 public void initData(String content) { //随机打乱datas顺序 Collections.shuffle(Arrays.asList(datas)); randomnew Random(); //动态创建TextView for(int i 0; i datas.length; i) { TextView textViewnew TextView(getActivity()); textView.setText(datas[i]); //【设置textView的属性】 //字体大小 textView.setTextSize(DensityUtil.dip2px(10)); //padding int padding DensityUtil.dip2px(3); textView.setPadding(padding,padding,padding,padding); //margin ViewGroup.MarginLayoutParams paramsnew ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.leftMarginDensityUtil.dip2px(8); params.topMarginDensityUtil.dip2px(8); params.rightMarginDensityUtil.dip2px(8); params.bottomMarginDensityUtil.dip2px(8); textView.setLayoutParams(params); //背景颜色 int redrandom.nextInt(211); int greenrandom.nextInt(211); int bluerandom.nextInt(211); int rgb Color.rgb(red, green, blue); //设置背景方式1 //textView.setBackgroundColor(rgb); //设置背景方式2 float radiusDensityUtil.dip2px(5); //textView.setBackground(DrawableUtils.getDrawable(rgb,radius)); //【设置textView的点击事件或者说是selector】 //设置Selector GradientDrawable normalDrawable DrawableUtils.getDrawable(rgb, radius); GradientDrawable pressDrawable DrawableUtils.getDrawable(Color.WHITE, radius); StateListDrawable selector DrawableUtils.getSelector(normalDrawable, pressDrawable); textView.setBackground(selector); //设置点击响应// textView.setClickable(true); textView.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { Toast.makeText(getActivity(), ((TextView)v).getText().toString(), Toast.LENGTH_SHORT).show(); } }); //【将textView添加到FramLayout中】 flowLayout.addView(textView); } }转载于:https://www.cnblogs.com/libuyi/p/5906401.html