当前位置: 首页 > wzjs >正文

建筑学网站军事新闻最新消息今天报道

建筑学网站,军事新闻最新消息今天报道,wordpress new图标,武隆集团网站建设本文详细介绍了如何在Android开发中优化selector的封装,涵盖Button、TextView、ImageView、CheckBox、RadioButton等常见控件的动态效果实现。通过结合Material Design组件、矢量图、Ripple效果以及动画Selector,提供了一套现代化、高性能的解决方案&…

本文详细介绍了如何在Android开发中优化selector的封装,涵盖Button、TextView、ImageView、CheckBox、RadioButton等常见控件的动态效果实现。通过结合Material Design组件、矢量图、Ripple效果以及动画Selector,提供了一套现代化、高性能的解决方案,帮助开发者提升代码可维护性和应用性能。


1. Button的Selector封装

使用MaterialButtonripple效果,结合shapecolor选择器。

1.1 背景Selector

<!-- res/drawable/button_background_selector.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 按下状态 --><item android:state_pressed="true"><shape android:shape="rectangle"><solid android:color="#FF0000"/> <!-- 红色背景 --><corners android:radius="8dp"/> <!-- 圆角 --></shape></item><!-- 默认状态 --><item><shape android:shape="rectangle"><solid android:color="#00FF00"/> <!-- 绿色背景 --><corners android:radius="8dp"/></shape></item>
</selector>

1.2 Ripple效果(API 21+)

<!-- res/drawable/button_ripple_selector.xml -->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"android:color="#FF0000"> <!-- 波纹颜色 --><item android:drawable="@drawable/button_background_selector"/> <!-- 默认背景 -->
</ripple>

1.3 使用MaterialButton

<com.google.android.material.button.MaterialButtonandroid:id="@+id/myButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me"android:background="@drawable/button_ripple_selector"app:cornerRadius="8dp"app:strokeColor="#0000FF"app:strokeWidth="2dp"/>

2. TextView的Selector封装

通过color选择器实现文本颜色的动态变化。

2.1 文本颜色Selector

<!-- res/color/text_color_selector.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 按下状态 --><item android:state_pressed="true" android:color="#FF0000"/> <!-- 红色 --><!-- 默认状态 --><item android:color="#0000FF"/> <!-- 蓝色 -->
</selector>

2.2 使用

<TextViewandroid:id="@+id/myTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World"android:textColor="@color/text_color_selector"/>

3. ImageView的Selector封装

使用矢量图和selector实现不同状态下的图标切换。

3.1 图标Selector

<!-- res/drawable/icon_selector.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 按下状态 --><item android:state_pressed="true" android:drawable="@drawable/ic_pressed"/><!-- 默认状态 --><item android:drawable="@drawable/ic_default"/>
</selector>

3.2 使用

<ImageViewandroid:id="@+id/myImageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/icon_selector"/>

4. CheckBox的Selector封装

使用selector实现选中和未选中状态的图标切换。

4.1 图标Selector

<!-- res/drawable/checkbox_selector.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 选中状态 --><item android:state_checked="true" android:drawable="@drawable/ic_checked"/><!-- 未选中状态 --><item android:state_checked="false" android:drawable="@drawable/ic_unchecked"/>
</selector>

4.2 使用

<CheckBoxandroid:id="@+id/myCheckBox"android:layout_width="wrap_content"android:layout_height="wrap_content"android:button="@drawable/checkbox_selector"/>

5. RadioButton的Selector封装

使用selector实现选中和未选中状态的图标切换。

5.1 图标Selector

<!-- res/drawable/radiobutton_selector.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 选中状态 --><item android:state_checked="true" android:drawable="@drawable/ic_radio_checked"/><!-- 未选中状态 --><item android:state_checked="false" android:drawable="@drawable/ic_radio_unchecked"/>
</selector>

5.2 使用

<RadioButtonandroid:id="@+id/myRadioButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:button="@drawable/radiobutton_selector"/>

6. 动画Selector(Animated Selector)

使用<animated-selector>实现状态切换时的动画效果。

6.1 动画Selector

<!-- res/drawable/animated_button_selector.xml -->
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 默认状态 --><item android:id="@+id/default_state" android:drawable="@drawable/ic_default"/><!-- 按下状态 --><item android:id="@+id/pressed_state" android:drawable="@drawable/ic_pressed"/><!-- 过渡动画 --><transition android:fromId="@id/default_state" android:toId="@id/pressed_state"><animation-list><item android:duration="100" android:drawable="@drawable/intermediate_1"/><item android:duration="100" android:drawable="@drawable/intermediate_2"/></animation-list></transition>
</animated-selector>

6.2 使用

<ImageViewandroid:id="@+id/animatedImageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/animated_button_selector"/>

7. 性能优化建议

  1. 减少层级嵌套:避免在selector中嵌套过多层级,以减少渲染开销。
  2. 使用矢量图:尽量使用矢量图(<vector>)代替位图,以减少资源占用。
  3. 复用资源:提取公共的shapecolordrawable,避免重复定义。
  4. Material Design组件:优先使用MaterialButtonMaterialTextView等组件,它们内置了优化效果。

8. 统一管理样式

通过<style>统一管理控件的selector和样式。

8.1 定义样式

<!-- res/values/styles.xml -->
<style name="AppButtonStyle"><item name="android:background">@drawable/button_ripple_selector</item><item name="android:textColor">@color/text_color_selector</item><item name="android:textSize">16sp</item><item name="android:padding">12dp</item>
</style>

8.2 使用样式

<Buttonandroid:id="@+id/myButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me"style="@style/AppButtonStyle"/>

通过以上优化整理,你可以实现高效、可维护且现代化的selector封装方案,适用于各种Android控件和场景。


文章转载自:

http://PCsq2lwt.cbndj.cn
http://Qqdo42TP.cbndj.cn
http://wNxpZnc9.cbndj.cn
http://xQiZRu9W.cbndj.cn
http://g5J0VYcn.cbndj.cn
http://sGaU7MMC.cbndj.cn
http://Pcqaj9pY.cbndj.cn
http://j0kXHyYU.cbndj.cn
http://7URlZc8s.cbndj.cn
http://IUWYiIQa.cbndj.cn
http://fIzrLrNG.cbndj.cn
http://H0wIKAey.cbndj.cn
http://GRg1iSka.cbndj.cn
http://CXUh8xFe.cbndj.cn
http://hR880cwz.cbndj.cn
http://q0AXMxqS.cbndj.cn
http://3LJ5NL0j.cbndj.cn
http://YwnTK8Iu.cbndj.cn
http://GFBTorof.cbndj.cn
http://BYI1m6v4.cbndj.cn
http://USgrJrKr.cbndj.cn
http://LxxzFTWJ.cbndj.cn
http://EZWMhx0U.cbndj.cn
http://JyVkPfRA.cbndj.cn
http://BWpxFD8X.cbndj.cn
http://YqFiwgsi.cbndj.cn
http://GscQV5eG.cbndj.cn
http://zGpuywOf.cbndj.cn
http://jRh3aR5c.cbndj.cn
http://6LVSHIeU.cbndj.cn
http://www.dtcms.com/wzjs/654376.html

相关文章:

  • mooc网站开发案例百度推广业务电话
  • 申请免费网站哪个好wordpress分类自定义文字
  • 长春火车站进站需要核酸检测吗长沙优化网站分析
  • 网站建设 客户定位多语言版本网站
  • 工农区网站建设网站建设投标文件范本
  • 比较好的网站建设公司电话网站主播
  • 网站建设五行深圳品牌网站建设公司哪家好
  • 洛阳便宜网站建设新手做电商卖什么好
  • 山西做杂粮的网站青海 网站开发 图灵
  • 网站建站网站建设做国外直播网站有哪些
  • 做印刷广告的图片在哪个网站找ii6创建网站
  • 网站上登录系统制作福州网站建设嘉艺
  • 手机软件下载网站开发小程序的平台
  • 网站建设制作策划方案怎么做虚拟网站
  • wordpress淘宝客建站个人域名可以备案企业网站吗
  • 自己做服装搭配的网站网站建设长尾关键词
  • 网站制作易捷网络wordpress网代码显示
  • 网站的发展趋势建网站建网站的公司
  • 新华网站建设网站后台登陆密码
  • 厦门做企业网站网络广告策划流程有哪些?
  • 广州海珠建网站的公司保定市清苑区网站建设
  • 北京做手机网站建设怎样做公司网站介绍
  • 商丘网站建设费用新手卖家做来赞达网站如何
  • 建站公司常见提成比例wordpress换域名搬家图片不显示
  • 中企动力建设的网站如何修改wordpress 4.4 火车头
  • 帮人做网站如何收费旅游网站推荐
  • 宁波建设网站的公司网站开发用哪种语言做好
  • 网站筹建中化隆县公司网站建设
  • 普通网站 seo 多少钱游戏优化大师官网
  • 检测网站是否做了301企业模板建站公司