zoukankan      html  css  js  c++  java
  • [Android]Button按下后修改背景图

    Button按下后修改背景图

    错误做法:
    为Button添加OnTouch事件监听,根据ACTION_UP和ACTION_DOWN动作来修改Button的背景图

    错误原因:
    从理论上讲,按钮按下修改背景色是一个UI逻辑,而非一个业务逻辑,OnTouch事件必然是写在Activity内,即MVC的
    Control中,Control中就用来处理业务逻辑,而比应该引入UI逻辑,否则将会导致代码难以维护。


    个人认为应该使用Selector实现此效果:

    基本步骤:

    1.在res/drawable下创建xml定义所需的效果

    2.在页面布局文件中为按钮添加selector


    创建selector:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- pressed -->
        <item android:state_pressed="true" 
            android:drawable="@drawable/btn_down"/> 
             
        <!-- focused -->
        <item android:state_focused="true" 
            android:drawable="@drawable/btn_default"/> 
            
        <!-- 默认时的背景图片-->
        <item android:drawable="@drawable/btn_default" />
    </selector>
    btn_selected.xml

    引入selector:

    android:background="@drawable/btn_default"

    <Button android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_default"
            android:text="Button"/>
    main_activty.xml

    这样就可以将UI逻辑和业务逻辑分开,使得Activity中的代码更清晰

    人生就是一局不能Again的DOTA
  • 相关阅读:
    hdu 4027 Can you answer these queries?
    hdu 4041 Eliminate Witches!
    hdu 4036 Rolling Hongshu
    pku 2828 Buy Tickets
    hdu 4016 Magic Bitwise And Operation
    pku2886 Who Gets the Most Candies?(线段树+反素数打表)
    hdu 4039 The Social Network
    hdu 4023 Game
    苹果官方指南:Cocoa框架(2)(非原创)
    cocos2d 中 CCNode and CCAction
  • 原文地址:https://www.cnblogs.com/hellenism/p/3614888.html
Copyright © 2011-2022 走看看