Android样式与主题

Android样式与主题

1、样式:
目的:为了项目解耦度高,有时许多界面用到同一个插件或者效果时,可利用样式实现重复利用。
基本使用:样式风格可以运行在不同的view的实例中。(以Android studio为平台)在res–>values–>styles.xml下定义如下代码。样式是以style为标签定义一个样式,以item为标签定义一个条目。如下所示

   <style name="radiobuttonstyle">
        <item name="android:textColor">@drawable/radiotextcolor</item>
        <item name="android:scaleY">0.7</item>
        <item name="android:scaleX">0.7</item>
        <item name="android:textSize">20sp</item>
        <item name="android:layout_weight">1</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">0dp</item>
        <item name="android:button">@null</item>
        <item name="android:gravity">center_horizontal</item>
    </style>

调用该样式的方法如下:下面例子可看出一个样式运用在不同的button中,不用重复写,提高解耦性。

   <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="4"
        android:orientation="horizontal"
        android:background="#ddd"
        >
        <RadioButton
            android:drawableTop="@drawable/weichat"
            android:text="微信"
            android:id="@+id/wechat_"
            style="@style/radiobuttonstyle"
            />
        <RadioButton
            android:drawableTop="@drawable/contact"
            android:text="联系人"
            android:id="@+id/contact_"
            style="@style/radiobuttonstyle"
            />
        <RadioButton
            style="@style/radiobuttonstyle"
            android:drawableTop="@drawable/find"
            android:text="发现"
            android:id="@+id/find_"
            />
        <RadioButton
            style="@style/radiobuttonstyle"
            android:drawableTop="@drawable/me"
            android:text="我"
            android:id="@+id/me_"
            />
    </RadioGroup>

继承style
两种方法:第一种是以点(.)位标识,继承自父类。第二种是直接在后面写上继承的对象。
如下例子:

/*第一种继承方式:如下,linerlayoutstye具有radiobuttonstyle所有特性外,还有自身的特性。*/
    <style name="radiobuttonstyle.linerlayoutstye"
        >
    <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:paddingLeft">40dp</item>
        <item name="android:paddingRight">40dp</item>
    </style>
/*第二种继承方法:利用parent标识继承,如下,radiobuttonstyle具有linerlayoutstye所有特性外,还有自身的特性。*/
    <style name="radiobuttonstyle" parent="linerlayoutstye">
        <item name="android:textColor">@drawable/radiotextcolor</item>
        <item name="android:scaleY">0.7</item>
        <item name="android:scaleX">0.7</item>
        <item name="android:textSize">20sp</item>
        <item name="android:layout_weight">1</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_width">0dp</item>
        <item name="android:button">@null</item>
        <item name="android:gravity">center_horizontal</item>
    </style>

2、Android主题:
当样式运用于窗体级别,全部窗体或者某个窗体时,即变成了主题。
目的:解耦,自定义窗体显示效果等。
基本上使用:在style.xml文件下定义一个style,下面示出最常用的特性:设置无标题、设置全屏和背景图片。接着在manifest文件中使用这个定义即可。

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <!--设置无标题-->
        <item name="windowNoTitle">true</item>
        <!--设置全屏-->
        <item name="android:windowFullscreen">true</item>
        <!--设置背景图-->
        <item name="android:windowBackground">@drawable/icon_background</item>
        <!-- <item name="windowBackground">@drawable/icon_background</item>-->
    </style>

</resources>

在manifest文件中使用style样式,如果只想一个activity使用此样式,可值activity标签内的Theme使用此样式

/*使用样式在整个application中*/
  <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
/*使用样式在单个activity中*/
<activity android:name=".MainActivity"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

如下是使用主题样式的效果。
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值