Android5.0Demo

  现在一个项目中随处可见Android5.0的足迹,尤其是Material的设计部分,相当漂亮,小白正解开启了5.0的学习,不足之处,请各位大神指点,谢谢!

  这是一个更换主题的小demo,点击按钮时候,可切换至不同的主题(开发工具为AS),直接看代码:

  xml的布局代码就不贴了,因为直接是俩个Button,

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <style name="AppTheme" parent="android:Theme.Material.Light">
 5         <!--应用的主要色调-->
 6         <item name="android:colorPrimaryDark">#ff3367d5</item>
 7         <!--actionBar主题色-->
 8         <item name="android:colorPrimary">#ff4284f3</item>
 9         <!--窗口背景颜色-->
10         <item name="android:windowBackground">@color/windowbg</item>
11         <!--底部导航栏颜色-->
12         <item name="android:navigationBarColor">#ff030303</item>
13     </style>
14     <!--红色主题-->
15     <style name="AppTheme_Red" parent="android:Theme.Material.Light">
16         <!--应用的主色调-->
17         <item name="android:colorPrimaryDark">@color/Red_colorPrimaryDark</item>
18         <!--actionBar颜色-->
19         <item name="android:colorPrimary">@color/Red_colorPrimary</item>
20         <!--窗口背景颜色-->
21         <item name="android:windowBackground">@color/Red_windowBackground</item>
22         <!--底部导航栏-->
23         <item name="android:navigationBarColor">@color/Red_navigationBarColor</item>
24     </style>
25     <!--紫色主题-->
26     <style name="AppTheme_Pink" parent="android:Theme.Material.Light">
27         <!--应用的主色调-->
28         <item name="android:colorPrimaryDark">@color/pink_colorPrimaryDark</item>
29         <!--actionBar颜色-->
30         <item name="android:colorPrimary">@color/pink_colorPrimary</item>
31         <!--窗口背景颜色-->
32         <item name="android:windowBackground">@color/pink_windowBackground</item>
33         <!--底部导航栏-->
34         <item name="android:navigationBarColor">@color/pink_navigationBarColor</item>
35     </style>
36 </resources>

MainActivity.java

 1 package com.samsarah.theme5;
 2 
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.Button;
 8 
 9 public class MainActivity extends Activity implements View.OnClickListener {
10 
11     private Button btn_red;
12     private Button btn_pink;
13     private Intent intent;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         initView();
18     }
19 
20     /**
21      * 初始化界面
22      */
23     protected void initView(){
24         //去掉ActionBar
25         //requestWindowFeature(Window.FEATURE_NO_TITLE);
26         int themeId = getIntent().getIntExtra("themeId",-1);
27         if (themeId != -1){
28             setTheme(themeId);
29         }
30         setContentView(R.layout.activity_main);
31         btn_red = (Button) findViewById(R.id.btn_red);
32         btn_pink = (Button) findViewById(R.id.btn_pink);
33         btn_red.setOnClickListener(this);
34         btn_pink.setOnClickListener(this);
35     }
36 
37     @Override
38     public void onClick(View view) {
39 
40         switch (view.getId()){
41             case R.id.btn_red:
42                 finish();
43                 overridePendingTransition(0,0);
44                 //因为调用setTheme的时候,会提示必须在setContentView之间,但是第一次就自相矛盾,所以finish()掉之后重启就ok了
45                 intent = new Intent(MainActivity.this,MainActivity.class);
46                 //告知系统需要更换的主题
47                 intent.putExtra("themeId",R.style.AppTheme_Red);
48                 //重启
49                 startActivity(intent);
50                 //点击按钮更换主题样式
51 //                setTheme(R.style.AppTheme_Red);
52                 break;
53             case R.id.btn_pink:
54                 finish();
55                 overridePendingTransition(0,0);
56                 intent = new Intent(MainActivity.this,MainActivity.class);
57                 intent.putExtra("themeId", R.style.AppTheme_Pink);
58                 startActivity(intent);
59 //                setTheme(R.style.AppTheme_Pink);
60                 break;
61             default:
62                 break;
63         }
64     }
65 }

  注意:在开始一个新的主题时候,IDE会提示必须在seiContentView之前,但是初次的话,肯定不可能,自相矛盾,所以finish之后,重启即可,另外切换主题使用setTheme就可。

  代码托管:https://github.com/SamSarah1/Android-Demo

 

posted @ 2015-11-08 11:04  SamSarah  阅读(288)  评论(0编辑  收藏  举报