Android分享一个开源项目ShapeView

Android分享一个开源项目ShapeView

2023年7月13日发(作者:)

Android分享⼀个开源项⽬ShapeView从效果图中可以看出,覆盖了App中常⽤的按钮效果,弧度、按压效果、标签选择、按钮渐变⾊等。如果⽤实现的话,项⽬drawable⽬录下如图所⽰:你会发现需要写很多shape⽂件,很难管理。如果使⽤⾃定义属性的话,有以下优点:1.减少项⽬中95%以上的shape⽂件,还能减少安装包体积2.⼀键复制,增加开发效率3.代码灵活修改Shape属性,例如按钮弧度,渐变⾊等Shape框架如何使⽤?使⽤Android Studio开发的童鞋在线依赖,⽬前最新版本是1.1.1:implementation ':shape:1.1.1'⽬前⽀持以下⾃定义属性,满⾜⼤部分需求app:solid_color="#FF00FF" 填充颜⾊app:select_solid_color="#FFFFFFFF" 选中填充颜⾊app:pressed_solid_color="#FFDEE0E2" 按压填充颜⾊app:corners_radius="5dp" 弧度app:stroke_color="#00ff00" 边框颜⾊app:select_stroke_color="#ffbababa" 选中情况边框⾊app:stroke_width="2dp" 边框宽度app:select_stroke_width="0.5dp" 选中情况边框宽度app:top_left_radius="15dp" 左上弧度app:top_right_radius="15dp" 右上弧度app:bottom_left_radius="15dp" 左下弧度app:bottom_right_radius="15dp" 右下弧度app:shape_view="oval" View形状app:color_orientation="top_bottom" 颜⾊渐变⾊⽅向(背景/边框/⽂字)app:start_color="#5BC9FF" 填充渐变⾊开始app:center_color="#FF00FF" 填充渐变⾊中间app:end_color="#4669F6" 填充渐变⾊结束app:select_start_color="#EB89FF" 渐变⾊选中开始⾊app:select_center_color="#FCCE5F" 渐变⾊选中中间⾊app:select_end_color="#FCCE5F" 渐变⾊选中结束⾊按压渐变⾊app:pressed_start_color="#983458"app:pressed_center_color="#98633F"app:pressed_end_color="#98633F"app:text="点击我切换选中效果"app:select_text="选中时显⽰的⽂字"app:border_gradient="true/false" 边框渐变app:text_gradient="true/false" ⽂字渐变app:text_color="#FFFFFFFF" ⽂本未选中颜⾊app:select_text_color="#BBBBBB" ⽂本选中颜⾊app:unselect_drawable="@mipmap/icon_sex_select_male" 图⽚未选中app:select_drawable="@mipmap/icon_sex_select_woman" 图⽚选中app:drawable_direction="right" 图⽚显⽰TextView⽅向,left:左边 top:上⾯ right:右边 bottom:底部⾸先需要在xml根布局控件增加⼀个属性:xmlns:app="/apk/res-auto"例如给TextView设置弧度、填充颜⾊、边框颜⾊、边框宽度,代码如下所⽰:完整xml代码: 完整的java代码:import ntDrawable;import ;import ;import ;import ;import patActivity;import inearLayout;import extView;public class MainActivity extends AppCompatActivity implements kListener { private AnsenTextView tvDynamicAlteration; private boolean change = false; private AnsenTextView tvMale, tvWoman, tvTag, atvBorderText; private AnsenLinearLayout llGoddess, llOrdinaryGirls; @Override protected void onCreate(Bundle savedInstanceState) { te(savedInstanceState); setContentView(ty_main); tvDynamicAlteration = findViewById(_dynamic_alteration); lickListener(this); tvMale = findViewById(_male); ected(true);//默认选中男 tvWoman = findViewById(_woman); lickListener(this); lickListener(this); tvTag = findViewById(_tag); lickListener(this); llGoddess = findViewById(_goddess); ected(true); llOrdinaryGirls = findViewById(_ordinary_girls); lickListener(this); lickListener(this); atvBorderText = findViewById(_border_text); lickListener(this); findViewById(_one).setOnClickListener(this); } @Override public void onClick(View v) { if (() == _dynamic_alteration) { if (() == _dynamic_alteration) { //改变View的渐变⾊ if (change) { rtColor(0xFFFF8B59); Color(0xFFF64848); //背景渐变⾊⽅向从上到下 orOrientation(_BOTTOM); } else { rtColor(0xFFFF68FF);//直接写颜⾊ Color(getResources().getColor());//从资源⽂件获取颜⾊ //背景渐变⾊⽅向从右边到左边 orOrientation(_LEFT); } change = !change; ackground();//设置了属性之后需要调⽤这个⽅法 } else if (() == _change_select) {//改变选中效果 Log.i("ansen", "点击之后"); ected(!cted()); } else if (() == _change_select_two) { ected(!cted()); } else if (() == _one) { ected(!cted()); } else if (() == _male) {//男选中 ected(true); ected(false); } else if (() == _woman) {//⼥选中 ected(false); ected(true); } else if (() == _press_one) { xt(this, "按压效果", _SHORT).show(); } else if (() == _tag) { okeColor(getResources().getColor(_clicl_color)); ackground();//设置了属性之后需要调⽤这个⽅法 } else if (() == _goddess) { ected(true); ected(false); } else if (() == _ordinary_girls) { ected(false); ected(true); } else if (() == _border_text) {// Log.i("ansen","点击"); ected(!cted()); if (cted()) { rtColor(0xFF5BC9FF); terColor(0);//0就是不设置 Color(0xFF4669F6); } else { rtColor(0xFFFFE61B); terColor(0xFF5BC9FF); Color(0xFFF80FE4); } date();//重绘 } else if (() == _age) { ected(!cted()); } else if (() == _age_two) { ected(!cted()); } else if (() == _select) { ected(!cted()); } else if (() == _image) { ected(!cted()); } else if (() == _one) { ected(!cted()); } }}

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689217145a222423.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信