9、样式的学习与使用

本文介绍了一款手机防盗设置向导的UI设计过程,包括使用样式简化布局设计的方法及优缺点。通过定义多种样式,如标题、内容文本、按钮等,实现了界面的快速搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手机防盗设置向导中,一共有四个步骤,第一个界面如下:


后面步骤类似,考虑到相同风格的控件使用较多,使用样式来完成。

以上图界面为例,划分的布局为:

TextView显示:1.欢迎使用手机防盗

View显示分割条

TextView显示:您的手机防盗卫士

连续四个:ImageView+TextView

一个Horizontal风格的LinearLayout居中显示四个圆圈图片,表示进行到第几步骤。

一个ImageView显示一个较大的图片

一个右下角的带有图片的Button


创建Values Resource File:style.xml,样式内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="horizontal_linearlayout">
        <!--该样式用于水平布局-->
        <item name="android:orientation">horizontal</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
    <style name="relativelayout">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>


    <style name="splitter_view">
        <!--该样式用于分割条-->
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">1dp</item>
        <item name="android:background">@drawable/devide_line</item>
        <item name="android:layout_marginTop">5dp</item>
    </style>


    <style name="title_text">
        <!--该样式用于标题-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">fill_horizontal</item>
        <item name="android:textSize">30sp</item>
        <item name="android:textStyle">bold</item>
    </style>
    <style name="title_center_text" parent="title_text">
        <!--该样式用于居中标题-->
        <item name="android:layout_gravity">center_horizontal</item>
    </style>


    <style name="content_text">
        <!--该样式用于内容文本-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">20sp</item>
    </style>
    <style name="content_withimage_text" parent="content_text">
        <!--该样式用于前面有image控件的内容文本-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">right</item>
    </style>


    <style name="text_start_image">
        <!--该样式用于文本前的图像-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">left</item>
        <item name="android:src">@drawable/text_start_image</item>
    </style>


    <style name="dot_disable_image">
        <!--灰化圆圈图像-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:src">@drawable/dot_disable</item>
    </style>
    <style name="dot_enable_image">
        <!--绿色圆圈图像-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:src">@drawable/dot_enable</item>
    </style>


    <style name="center_icon_image">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:gravity">center_horizontal</item>
        <item name="android:layout_marginTop">40dp</item>
        <item name="android:layout_marginBottom">40dp</item>
    </style>


    <style name="prev_button">
        <!--上一步-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">left</item>
        <item name="android:layout_alignParentLeft">true</item>
        <item name="android:text">上一步</item>
        <item name="android:drawableLeft">@drawable/prev</item>
        <item name="android:onClick">prev</item>
    </style>
    <style name="next_button">
        <!--下一步-->
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">right</item>
        <item name="android:layout_alignParentRight">true</item>
        <item name="android:text">下一步</item>
        <item name="android:drawableRight">@drawable/next</item>
        <item name="android:onClick">next</item>
    </style>




</resources>

向导步骤一的界面使用上述样式后的局部文件内容为:

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView style="@style/title_text"
        android:text="1.欢迎使用手机防盗" />


    <View style="@style/splitter_view"/>


    <TextView style="@style/content_text"
        android:text="您的手机防盗卫士:" />


    <LinearLayout style="@style/horizontal_linearlayout">
        <ImageView style="@style/text_start_image" />
        <TextView style="@style/content_withimage_text" android:text="sim卡变更报警" />
    </LinearLayout>


    <LinearLayout style="@style/horizontal_linearlayout">
        <ImageView style="@style/text_start_image" />
        <TextView style="@style/content_withimage_text" android:text="GPS追踪" />
    </LinearLayout>


    <LinearLayout style="@style/horizontal_linearlayout">
        <ImageView style="@style/text_start_image" />
        <TextView style="@style/content_withimage_text" android:text="远程数据销毁" />
    </LinearLayout>


    <LinearLayout style="@style/horizontal_linearlayout">
        <ImageView style="@style/text_start_image" />
        <TextView style="@style/content_withimage_text" android:text="远程锁屏" />
    </LinearLayout>


    <!--显示四个步骤的第一步:居中-->
    <LinearLayout style="@style/horizontal_linearlayout"
        android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp">
        <ImageView style="@style/dot_enable_image" />
        <ImageView style="@style/dot_disable_image" />
        <ImageView style="@style/dot_disable_image" />
        <ImageView style="@style/dot_disable_image" />
    </LinearLayout>


    <!--显示一个大图标:居中-->
    <ImageView style="@style/center_icon_image"
        android:src="@drawable/setup1"/>


    <Button style="@style/next_button" />


</LinearLayout>

使用样式的优缺点:

优点:重用性高,样式可继承,可覆盖,这点类似于“类”的继承与覆盖。样式编写完成后,布局就比较容易编写,而且代码量大大降低。

缺点:不是所见即所得,在设计阶段显示不出运行时的效果,往往需要动态运行才能显示出效果,在这方面降低了开发效率。

如下图是在编码阶段的设计预览图,完全就是一坨屎。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

asmcvc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值