关闭

Android-系统换肤的几种方法

标签: Android换肤
579人阅读 评论(0) 收藏 举报
分类:

Android-系统换肤的几种方法
一 使用Theme进行简单的换肤
1,为不同的皮肤编写不同的Theme,然后在manifest文件的Activity中应用即可

<activity android:theme="@style/MyTheme"></activity>

2,在onCreate中动态的设置setTheme

public class MainActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //设置主题
        setTheme(R.style.AppTheme);
        setContentView(R.layout.layout_portrait);

    }
}

二 改变界面的布局文件来换肤
1,为不同的皮肤编写不同的布局文件

2,加载布局文件

3,重新绑定界面控件

下面是一个横竖屏转换的Demo:
主Activity类:

public class MainActivity extends Activity
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState); 
        //初始化状态的竖屏
        setContentView(R.layout.layout_portrait);
        //由打出的log可以判断系统利用onConfigurationChanged转换的时候,不会重新onCreate,只是在第一次
        //的时候onCreate
        log.i("chengzhi log", "onCreate");
    }

    //利用onConfigurationChanged可以提高转换的效率
    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);

        //系统状态改变为垂直的时候
        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
        {
            //设置布局为竖屏
            setContentView(R.layout.layout_portrait);

        }
        //系统状态改变为水平的时候
        else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            //设置布局为水平
            setContentView(R.layout.layout_landscape); 
        }
         //打出log,判断是否正常运行
        Log.i("chengzhi", "onConfigurationChanged");
    }  
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

两个布局文件类:
1,水平布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"   
    android:orientation="horizontal" >
   //四个按钮
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

如下图:
这里写图片描述

2,竖直布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    //下面是四个按钮
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

如下图:
这里写图片描述

manifest文件注册主Activity:

<activity
        android:name="com.example.androidconfigchange.MainActivity"
            android:label="@string/app_name"
            <!--设置configChanges属性为orientation -->
            android:configChanges="orientation" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" /> 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<!--添加权限  -->
    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:128781次
    • 积分:3005
    • 等级:
    • 排名:第12116名
    • 原创:209篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    博客专栏
    最新评论