• 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

  • 相关阅读:
    oracle增加类似sqlserver中的timestamp字段
    开源项目微人事
    java.lang.IllegalStateException: Form too many keys
    java.lang.IllegalStateException: Form too large 59992>50000
    axios.CancelToken
    节流 防抖重温
    c语言中%d %f %c %s等的区别
    C语言当中int,float,double,char这四个有什么区别?
    openssl windows 编译
    python不同版本pip下载模块方法
  • 原文地址:https://www.cnblogs.com/SamSarah/p/4946997.html
Copyright © 2020-2023  润新知