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

时间: 2025-01-06 03:36:27

Android5.0Demo的相关文章

Android5.0以上系统的移动网络开关

笔者近期遇到一个非常有意思的bug,贴出来和大家分享下. 那是一个温暖的早晨,阳光晒得人非常舒服.一封bug邮件像一片叶子飘到我的邮箱. 一番交流.笔者确认负责的Widget开关在Android5.0以上系统没有作用.相信非常多做过移动网络开关的朋友都知道.传统的方法是在ConnectivityManager中通过反射两个方法setMobileDataEnabled和getMobileDataEnabled来控制移动网络开和关的. /** * Gets the value of the sett

RTFSC - Android5.1 壁纸设置流程简析

Android5.1 壁纸设置流程浅析 Ubuntu14.04  Android5.1  Source Insight3 源代码请参阅http://androidxref.com/ 这里只是简单分析一下5.1里是如何设置壁纸的:这个流程和4.4有一些不同.但基本都是找个地方存放壁纸文件,需要的时候读取,设置的时候更新 这里只看设置的过程.权当参考. 机器使用launcher3,在桌面上长按,底部显示设置壁纸的入口.进入设置壁纸界面,观察log可知,此界面属于Trebuchet.也是launche

Android5.1 壁纸来源选项中有两个“壁纸”选项

Android5.1 壁纸来源选项中有两个“壁纸”选项[问题]系统语言为中文,打开 设置->显示->壁纸->查看显示可以看到设置菜单中有两个壁纸选项显示 系统语言为英文,菜单中有两个"Wallpapers"选项 [log]01-12 12:26:47.194: D/SubSettings(7598): Launching fragment com.android.settings.WallpaperTypeSettings [debug]找到WallpaperType

友情提醒:欲开发android5.0以上应用,请全部更新开发工具至最新

周末帮人完成一个项目,android5.0以上版本,谁知道被开发工具折腾的死去活来.我的开发环境是adt-bundle-windows-x86-20140702.zip版本,也是目前能找到的adt-bundle的最新版本.也升级至最新的adt和platform,但开发5.0的项目还是一堆错误: 错误1:动不动就报AndroidManifest.xml is missing的错误,为了解决这个问题每次都要将.android 和 开发空间里的.metadata,然后重启eclipse,真痛苦啊! 错

Android5.0之后的页面切换动画

Android5.0之后给我们开发者剩了好多的事情,为什么这么说呢?还记得刚开始的时候,Android里面的所有的动画都要我们开发者自己来写,现在不需要了,因为5.0之后自带了好多的动画,比如:按钮点击的动画.页面切换的动画(在android5.0之前想都不敢想的). 今天我着重讲一下页面之间的切换,目前5.0系统自带了三种动画方式:Explode(缩放).Fade(淡入淡出).Slide(滑动进入).下面就这三中方式进行介绍一下. 在讲解之前,现对于动画的方式进行介绍一下.通常,我们进行页面跳

Android5.0以上app进程保活的正确姿势

我的原文: http://blog.csdn.net/brycegao321/article/details/52312030 有图有真相,  亲测锤子T2.华为Mate8手机杀掉进程后能自启, 我设置的自启时间间隔为500ms(仅仅是为了测试).     首先要明确保活的概念: 1.非android核心进程(例如com.android.phone)都可以被干掉: 2.保活并不能真正的保证app进程不死,  而是能在被干掉后马上启动: Android系统按照进程的优先级分为: 1. 前台进程(F

ANDROID5.0触摸屏校准

1.校准原理: 1)首先生成校准用的参数,可以适用tslib生成校准参数,也可以使用校准app生成:使用校准app进行校准对使用者要求比较低,使用者可以不用学习复杂的命令:本文使用app方式 2)生成校准参数后,以后驱动每次接收到触摸事件就会使用校准参数进行校准 2.校准app 校准功能完全实现在在src目录里的MainActivity.java里,内容如下: package com.wss.calibrate2; import android.app.Activity;import andro

android5.0之toolBar

toolBar是android5.0之后提出的,可以简单的理解为ActionBar的升级版吧,在5.0之后,官方推荐使用ToolBar!下面开启ToolBar的正文(老样子,有问题请指正,有疑问,偶们共同讨论!嘎嘎......) ①toolBar是5.0之后提出的,那么低版本的该怎么办啊?老规矩咯,引入V7包'com.android.support:appcompat-v7:22.1.1',就是介个!(注意:下面的一些类都是V7包里的,不要写错了!!!) ②V7包引入之后,还是不可以直接使用to

android5.0----SVG

SVG ----scalable vector Graphics 可缩放矢量图形 android L 即android 5.0的新特性. 1,SVG是干什么的? 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准. 2,SVG特点? SVG 可被非常多的工具读取和修改(比如记事本) SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强. SVG 是可伸缩的 SVG 图像可在任何的分辨率下被高质量地