美文网首页android开发实战专题Android开发从0到1开发一款APP
商城项目实战 | 1.1 Android 仿京东商城底部布局的选

商城项目实战 | 1.1 Android 仿京东商城底部布局的选

作者: 菜鸟窝 | 来源:发表于2017-03-30 09:29 被阅读520次

    本文为菜鸟窝作者刘婷的连载。"商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现。
    140套Android优秀开源项目源码,领取地址:http://mp.weixin.qq.com/s/afPGHqfdiApALZqHsXbw-A

    京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要感谢 selector 选择器,本文将讲解仿照京东商城的底部布局的选择效果,如何实现 selector 选择器,在不同的状态下,给 view 设置不同的背景。
    京东商城底部布局的选择效果如下。

    View主要的几种状态

    主要状态有8种,设置状态的代码以及相应的含义如下。

    1. android:state_pressed = "true/false" //true表示按下状态,false表示非按下状态。
    2. android:state_focused = "true/false" //true表示焦点聚集状态,false表示非焦点聚集状态。
    3. android:state_selected = "true/false" //true表示选中状态,false表示非选中状态。
    4. android:state_activated = "true/false" //true表示激活状态,false表示非激活状态。
    5. android:state_checkable = "true/false" //true表示可以勾选状态,false表示不可以勾选。
    6. android:state_checked = "true/false" //true表示被勾选状态,false表示未被勾选状态。
    7. android:state_enabled = "true/false" //true表示可用状态,fasle表示不可用状态。
    8. android:state_window_focused = "true/false" //true表示应用程序窗口获取焦点状态,false表示应用程序窗口非获取焦点状态。```
    
    ###**设置不同状态下的图标背景**
    
    首先准备好不同状态下的同一类型的图标分别两张,复制到 mipmap 文件下,然后在 drawable 文件下新建 Drawable resource file 文件,命名为 selector_icon_home.xml
    
    ![](http:https://img.haomeiwen.com/i5205232/1fa44c70e441836c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    之后在 selector 下写入不同状态下的背景图,这里是首页模块的 Selector 设置的源代码。其他模块的 Selector 图标设置和首页模块一致。
    
    ```xml
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Non focused states -->
        <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@mipmap/icon_home" />
        <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
        <!-- Focused states -->
        <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
        <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@mipmap/icon_home_press" />
        <!-- Pressed -->
        <item android:state_selected="true" android:state_pressed="true" android:drawable="@mipmap/icon_home_press" />
        <item android:state_pressed="true" android:drawable="@mipmap/icon_home_press" />
     </selector>```
    
    所有模块下的 Selector 图片文件都添加完成后,最后设置 ImageView 的背景为 R.drawable.selector_icon_home,代码如下。
    
    ```xml
      imageView.setBackgroundResource(R.drawable.selector_icon_home);```
    
    运行后得到效果图如下。
    
    ![](http:https://img.haomeiwen.com/i5205232/6b061ce3c377f760.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ###**设置不同状态下的文字颜色**
    
    新建 color 文件,然后新建 Color resource file 文件,命名为 selector_tab_text.xml。
    
    ![](http:https://img.haomeiwen.com/i5205232/e173b2b16ab79a6b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    这里各个模块的选择效果下文本颜色变化是一样的,只需要在该文件中写入不同状态下的文字的颜色就可以了,其源代码如下。
    
    ```xml
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Selected -->
        <item android:state_selected="true" android:color="#eb4f38" />
        <!-- Active -->
        <item android:state_active="true" android:color="#eb4f38"/>
        <item android:state_selected="false" android:color="#a9b7b7" />
        <item android:state_active="false" android:color="#a9b7b7"/>
    </selector>```
    
    然后在布局文件 layout 中设置 TextView 的文字颜色为 R.color. selector_tab_text 就大功到成了。
    
    ```xml
    android:textColor="@color/selector_tab_text"```
    
    运行后得到效果图如下。
    
    ![](http:https://img.haomeiwen.com/i5205232/039327dd3fca90ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    ###**最终效果**
    
    ![](http:https://img.haomeiwen.com/i5205232/3f39e943ecd15399.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    selector 选择器在点击事件状态变化时基本上都会使用到,既开发方便,又交互效果好,已经是必不可少的,更多的用处和用法可以参考 Android developer 官方文档。
    
    >更多内容,请关注菜鸟窝(微信公众号ID: cniao5),程序猿的在线学习平台。 转载请注明出处,本文出自菜鸟窝,原文链接http://www.cniao5.com/forum/thread/d2f717260ec411e7a16c00163e0230fa
    

    相关文章

      网友评论

        本文标题:商城项目实战 | 1.1 Android 仿京东商城底部布局的选

        本文链接:https://www.haomeiwen.com/subject/aojuottx.html