[Android速通]进一步学习控件

/ 0评 / 0

之前学习中用的都是标准件,别人做好的东西,有时候也要用一些非标的东西,比如某些按钮很好看,他可能本身是图片实现的,但是手机分辨率那么多,如何解决这个问题,第一个方法是针对不同分辨率做图,设置多个drawable的资源,这样是最完美的,第二是使用.9图片,这可能是安卓自己专门设计的.

我有一个原始的按钮文件.

直接图片右键可以创建.9文件.

得到.9文件,就要开始加工.

调整黑线,只有黑线部分会被拉伸,黑线外会被排除,这样就不至于边缘放大模糊了,右边可以预览实际效果.原始文件不要在放在drawable里,不然就提示重复资源了.

实际替换(设置按钮的background属性)到软件里看看,安卓默认主题会覆盖颜色,所以用了按键的父类才能正确显示颜色.

AppCompatButton是Button的增强兼容版本,所以它支持所有Button的方法.

另外每个控件都有很多状态,可以分别对应不同的图片,需要把不同状态的设置到drawable文件,然后直接引用drawable文件.

比如我做了一个btn_states的drawable文件,只需要按钮引用到这个文件,就可以获得不同时刻的状态.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 1. 按下状态(手指触摸按钮时) -->
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#FF4081" /> <!-- 粉色 -->
            <corners android:radius="8dp" />
            <stroke android:width="1dp" android:color="#E91E63" />
        </shape>
    </item>

    <!-- 2. 禁用状态(按钮不可点击时) -->
    <item android:state_enabled="false">
        <shape android:shape="rectangle">
            <solid android:color="#CCCCCC" /> <!-- 灰色 -->
            <corners android:radius="8dp" />
            <stroke android:width="1dp" android:color="#999999" />
        </shape>
    </item>

    <!-- 3. 获得焦点状态(如通过键盘导航选中) -->
    <item android:state_focused="true">
        <shape android:shape="rectangle">
            <solid android:color="#4CAF50" /> <!-- 绿色 -->
            <corners android:radius="8dp" />
            <stroke android:width="2dp" android:color="#388E3C" />
        </shape>
    </item>

    <!-- 4. 默认状态(无任何交互时) -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#3F51B5" /> <!-- 蓝色 -->
            <corners android:radius="8dp" />
            <stroke android:width="1dp" android:color="#303F9F" />
        </shape>
    </item>
</selector>

效果就是这样的.

就靠着这些替换,可以做出很多效果,比如仿IOS开关,按钮下面还有很多东西,比如多选框,单选按钮等.之前的按钮中是setOnClick,但是我们看到setOn开头还有很多方法,比如EditText失去焦点后可以通过onFocusChange来判断用户输入是不是正确,或者在内容改变后(onTextChanged),判断内容正确(比如手机号码位数足够),则调用INPUT_METHOD_SERVICE隐藏软键盘.

一些简单的操作也没必要全新开一个Activity,可以用系统的对话框服务,或者一些现成的工具,比如DatePickerDialog,TimerPickerDialog.

今天说的内容比较少,但是基本上也是对控件的一个补充,主要是这部分涉及文档太多了,那么多控件可以选,眼花缭乱的,特别是对于我这种审美几乎没能力的人来说,就更加厉害了.所以虽然内容不多,但是却花了很长时间去看.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注