[Android Exercise]仿微信游戏界面PART.2—自定义样式shape和selector的应用

来看看上一PART做好的效果图和目标图的对比:



这里能发现有几个地方不太一样

1.图片和按钮部分都是圆角矩形样式,但目前做出来都是直角样式。

2.按住item以及按钮时没有动态变化。


为了完善这点,使用到自定义样式shape和selector进行处理。


******************************************

shape:设定形状,可以方便地设定我们需要的形状充当背景或者裁切控件。shape提供的四种基本形状是矩形(rectangle)、椭圆(oval)、线(line)、圆环(ring),每个基本形状下面也有不同的属性,比如渐变、半径、宽度、填充、边框等可以进行修改,具体的这里就不细说了。

selector:在一个控件需要有不同状态的时候使用。最典型的button,需要正常状态、按下状态、不可按下状态等等,可以使用selector进行样式设置。

******************************************


现在进行图片和下载按钮的设置:

1.图片:shape的设置,在drawable下新建game_pic.xml,Root Element选择shape,然后进行设置如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="8dp"/>
    <solid android:color="#00ab7a"/>
</shape>


这里我设置了基础形状为矩形(默认是矩形);四个角圆角半径为8dp(也可以单独一个一个角设置);填充颜色为#00ab7a的一个绿色。设置好了样式之后,返回到game_item的图片部分,将原来的background内容从颜色更改为刚刚设置好的样式,如下:

<ImageView
        android:id="@+id/imgGamePic"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:background="@drawable/game_pic"
        app:layout_constraintLeft_toRightOf="@id/thirdtyEightDPGuideLine"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="12dp"
        android:contentDescription="" />

运行一下,看看效果:



圆角的图片样式就完成了!


2.下载按钮的设置:

下载按钮是有不同的状态的,也就是未按下状态和按下的状态,两个状态下按钮背景颜色不同。在drawable文件下新建btn_download.xml,设置如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape>
            <solid android:color="#f8f8f8"/>
            <stroke android:color="#ebebeb"/>
            <corners android:radius="2dp"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#dfdfdf"/>
            <stroke android:color="#ebebeb"/>
            <corners android:radius="2dp"/>
        </shape>
    </item>
</selector>

在selector下使用item可以进行不同状态下的设置。在选择item的state_pressed属性为false,则是设定未按下时的状态;属性为true,则是按下时的状态。里面的shape的用法就不多说了,和上面图片一样。这里我设定了未被按下时填充颜色为#f8f8f8,边框颜色为#ebebeb,圆角为2dp;按下状态的填充颜色为#dfdfdf,边框颜色为#ebebeb,圆角为2dp。

设置好之后,返回到game_item中,将button的background属性值改为@drawable/btn_download,将刚设置好的样式引入进去。运行一次看看效果:



已经完全奏效了!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值