博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android系统自带样式(android:theme)解析
阅读量:6623 次
发布时间:2019-06-25

本文共 3396 字,大约阅读时间需要 11 分钟。

做Android开发时经常会修改系统默认的主题样式,在android的sdk  安装目录data\res\values\themes.xml 下是系统定义好的主题,可以直接使用

下面说一些常用的主题样式:

android:theme="@android:style/Theme.Dialog" : Activity显示为对话框模式

android:theme="@android:style/Theme.NoTitleBar" : 不显示应用程序标题栏

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" : 不显示应用程序标题栏,并全屏

android:theme="@android:style/Theme.Black" : 背景黑色

android:theme="@android:style/Theme.Black.NoTitleBar" : 黑色背景并无标题栏

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" : 黑色背景,无标题栏,全屏

android:theme="@android:style/Theme.Light ": 背景为白色

android:theme="@android:style/Theme.Light.NoTitleBar" : 白色背景并无标题栏

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen" : 白色背景,无标题栏,全屏

android:theme="@android:style/Theme.Wallpaper" : 用系统桌面为应用程序背景

android:theme="@android:style/Theme.Wallpaper.NoTitleBar" : 用系统桌面为应用程序背景,且无标题栏

android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" : 用系统桌面为应用程序背景,无标题栏,全屏

android:theme="@android:style/Theme.Translucent : 透明背景

android:theme="@android:style/Theme.Translucent.NoTitleBar" : 透明背景并无标题

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" : 透明背景并无标题,全屏

android:theme="@android:style/Theme.Panel ": 面板风格显示

android:theme="@android:style/Theme.Light.Panel" : 平板风格显示

如果整个工程用一个主题就在application 标签中定义。

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"

        android:theme="@style/AppTheme" > 

如果是每个activety用不同主题,则在不同的activity标签中引用,例如

      <activity
            android:name="com.example.activity.MainActivity"
            android:label="@string/app_name" 
            android:theme="@android:style/Theme.Light.NoTitleBar">

当然理论要多和实际联系,下面说个实际应用,大多数Android系统默认Activity间的动画切换效果为,右边滑入,左边滑出。有时候我们的需求可能是要求所有Activity的切换为淡入淡出的效果,这时候就可能需要改变一下默认的切换风格。

下面开始实现:

  • 首先在res文件夹下建立anim文件夹,然后在里面建立fade_in.xml和fade_out.xml两个动画资源

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android=""
    android:duration="1000"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>  
<alpha xmlns:android="http://schemas.android.com/apk/res/android"  
    android:duration="1000"  
    android:fromAlpha="1.0"  
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:toAlpha="0.0" />  
  • 然后在values文件夹下的styles.xml中的resources标签内写: 
   <style name="fade" parent="@android:style/Animation.Activity">  
       <item name="android:activityOpenEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityOpenExitAnimation">@anim/fade_out</item>  
       <item name="android:activityCloseEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityCloseExitAnimation">@anim/fade_out</item>  
   </style>  
<style name="Anim_fade" parent="android:Theme.NoTitleBar">  
       <item name="android:windowAnimationStyle">@style/fade</item>  
   </style>  
  
  • 最后修改AndroidManifest.xml 
 <activity
            android:name="com.example.activity.CustomAnimActivity"
            android:label="@string/app_name" 
            android:theme="@style/Anim_fade"/>
MainActivity.java类如下:
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(MainActivity.this,
                        CustomAnimActivity.class);
                startActivity(intent);
            }
        });
    }
效果如下:
参考文章:

你可能感兴趣的文章
【C#学习笔记】载入图片并居中
查看>>
php实现按utf8编码对字符串进行分割
查看>>
Ftp的断点下载实现
查看>>
[转载] ubuntu Authentication failure
查看>>
Ring0 - 链表
查看>>
修改数组之----splice
查看>>
a版本冲刺第五天
查看>>
Arduino示例教程超声波测距实验
查看>>
Redis操作hash
查看>>
ubuntu使sudo不需要密码
查看>>
How to pass in/out return VB Byte array from a COM Component written in C#
查看>>
轻松搞定个人虚拟桌面部署之5-在客户端测试远程桌面
查看>>
Linux中chkconfig使用介绍
查看>>
二进制方式快速安装MySQL数据库
查看>>
Centos5上部署udev
查看>>
挑战WORD极限排版之模板与加载项
查看>>
Tomcat配置多数据源
查看>>
(转)快速搭建PHP开发环境WAMP+ZendStudio+ZendDebugger
查看>>
js string format
查看>>
httpHandlers和httpModules接口介绍 (3)
查看>>