• Android中focusable属性的妙用——底层按钮的实现


    看到百威啤酒的客户端主界面的按钮,感觉比较新奇,先看下图片:

    注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了按下的效果(黄色的描边)

    刚开始看到这种效果很是好奇,不知道是怎么实现的,后来仔细一想,应该是整个啤酒罐是一张图片(ImageView),该图片是布局在三个按钮之上,然后就是最关键的地方,把图片设置为不可获取焦点,也就是android:focusable="false" ,就这样简单的一行,就可以搞定了!

    为了验证我的想法,我建了一个工程来做测试,效果如下图所示:

    具体代码如下:

    main.xml:

    <?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="
    http://schemas.android.com/apk/res/android" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
        <LinearLayout 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:orientation="vertical" > 
            <Button 
                android:layout_width="match_parent" 
                android:layout_height="wrap_content" 
                android:layout_margin="10dp" 
                android:text="button1" 
                android:background="@drawable/button_selector" 
                />    
            <Button 
                android:layout_width="match_parent" 
                android:layout_height="wrap_content" 
                android:layout_margin="10dp" 
                android:text="button2" 
                android:background="@drawable/button_selector" 
                />  
            <Button 
                android:layout_width="match_parent" 
                android:layout_height="wrap_content" 
                android:layout_margin="10dp" 
                android:text="button3" 
                android:background="@drawable/button_selector" 
                />  
        </LinearLayout> 
        <ImageView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:src="@drawable/bg2" 
            android:focusable="false" 
            /> 
    </RelativeLayout>

     

    button_selector.xml:

    <?xml version="1.0" encoding="utf-8"?> 
    <selector 
        xmlns:android="
    http://schemas.android.com/apk/res/android"
        <item android:state_pressed="true" > 
            <shape> 
                <!-- 实心,即填充 --> 
                <solid android:color="#8470FF"/> 
                <!-- 描边 --> 
                <stroke 
                    android:width="2dp" 
                    android:color="#FFFF00"/> 
                <!-- 圆角 --> 
                <corners 
                    android:radius="5dp" /> 
                <padding 
                    android:left="10dp" 
                    android:top="10dp" 
                    android:right="10dp" 
                    android:bottom="10dp" /> 
            </shape> 
        </item>

        <item>       
            <shape> 
                <!-- 实心,即填充 --> 
                <solid android:color="#8470FF"/> 
                <corners 
                    android:radius="5dp" /> 
                <padding 
                    android:left="10dp" 
                    android:top="10dp" 
                    android:right="10dp" 
                    android:bottom="10dp" /> 
            </shape> 
        </item> 
    </selector>

    关于button_selector.xml中shape的使用有疑问的可以看我上次的文章:Android中shape的使用

    ok,就说这么多……

     

     

     

  • 相关阅读:
    Knol of Fabio Maulo
    调用非.net系统的Webservice的探索 ( 二 ) WSE
    在Sql Server 使用系统存储过程sp_rename修改表名或列名
    Who is locking the DB account?
    (python learn) 7 字典
    (python learn) 8 流程控制
    (python learn) 4 number&& string
    where is the data come from after we drop the table
    (healthy recorder) 治疗第6天
    (python learn) 6 列表
  • 原文地址:https://www.cnblogs.com/firecode/p/2670834.html
Copyright © 2020-2023  润新知