1,在Android3.0之前,Android的界面不论是从系统还是空间的主题都是按钮为白色,点击事件为黄色。现在看来很简陋。
2,
Holo主题:
Android3.0 (API11)开始,Google推出了Holo主题(就是我们印象中的黑底白字蓝主色的主题)。在4.0重google又发布了应用设计规范Android Design。有了设计规范的指导,就有了更多的应用采用Holo主题。所以我们可以简单认为Android Design就是Holo主题。但是这种主题是适合移动设备,其他平台略显突兀。
在4.0之前Android可以说是没有设计可言的,在4.0之后推出了Android Design,从此Android在设计上有了很大的改善,而在程序实现上相应的就是Holo风格,所以你看到有类似 Theme.Holo.Light、 Theme.Holo.Light.DarkActionBar 就是4.0的设计风格,但是为了让4.0之前的版本也能有这种风格怎么办呢?这个时候就不得不引用v7包了,所以对应的就有 Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar,如果你的程序最小支持的版本是API14(即Android 4.0),那么可以不用考虑v7的兼容。
3,
Material 主题
:
从Android5.0(API21)开始,Google又推出了材料设计语言Material Design,又叫Google Design。MD崇尚的就是图层扁平化,所有图层像纸或者卡片一样重叠在一起,所以Android5.0就有了RecyclerView和CardView。图层之间有间隔,所以Android5.0中有了translation和elevation两个属性。同时也规范了Android的运动元素,界面上的每个元素不是无故产生的,同时每个图层的产生和消失都有方向的约定,从哪里来就往哪里去,这也是为什么Android 5.0中会有Ripple,Circular Receal,Activity Transition.
Android在5.0版本推出了Material Design的概念,这是Android设计上又一大突破。对应的程序实现上就有Theme.Material.Light、 Theme.Material.Light.DarkActionBar等,但是这种风格只能应用在在5.0版本的手机,如果在5.0之前应用Material Design该怎么办呢?同样的引用appcompat-v7包,这个时候的Theme.AppCompat.Light、Theme.AppCompat.Light.DarkActionBar就是相对应兼容的Material Design的Theme。
二,Android Theme的分类
1,android:Theme API 1 开始
2,android:Theme.Holo API 11(android3.0) 开始
3,android:Theme.DeviceDefault API 14(android4.0) 开始
4,android:Theme.Material API 21(android5.0) 开始
5,Theme.AppCompat 兼容包AppCompat_v7中的主题
三,使用系统主题的位置
1,使用非兼容包主题的方法:
在style标签的parent里面输入“Android:Theme”会有自动提示
Theme主题和
DeviceDefault
主题
Holo主题
Material主题
2,使用兼容主题的方法。
在style标签的parent里面输入“Theme”会有自动提示
android:Theme.Holo Holo根主题
android:Theme.Holo.Black Holo黑主题
android:Theme.Holo.Light Holo白主题
API 14:
Theme.DeviceDefault 设备默认根主题
Theme.DeviceDefault.Black 设备默认黑主题
Theme.DeviceDefault.Light 设备默认白主题
API 21: (网上常说的 Android Material Design 就是要用这种主题)
Theme.Material Material根主题
Theme.Material.Light Material白主题
兼容包v7中带的主题:
Theme.AppCompat 兼容主题的根主题
Theme.AppCompat.Black 兼容主题的黑色主题
Theme.AppCompat.Light 兼容主题的白色主题
更多主题:
以下都是指“包含”,比如包含“Dialog”表示对话框风格
比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是对话框风格
具体有没有这种组合,你就在“
自动提示
”中来看就可以,提示有就有,没有就没有。
Black 黑色风格
Light 光明风格
Dark 黑暗风格
DayNight 白昼风格
Wallpaper 墙纸为背景
Translucent 透明背景
Panel 平板风格
Dialog 对话框风格
NoTitleBar 没有TitleBar
NoActionBar 没有ActionBar
Fullscreen 全屏风格
MinWidth 对话框或者ActionBar的宽度根据内容变化,而不是充满全屏
WhenLarge 对话框充满全屏
TranslucentDecor 半透明风格
NoDisplay 不显示,也就是隐藏了
WithActionBar 在旧版主题上显示ActionBar
•android:theme="@android:style/Theme.Dialog" 将一个Activity显示为能话框模式
•android:theme="@android:style/Theme.NoTitleBar" 不显示应用程序标题栏
•android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不显示应用程序标题栏,并全屏
•android:theme="Theme.Light" 背景为白色
•android:theme="Theme.Light.NoTitleBar" 白色背景并无标题栏
•android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,无标题栏,全屏
•android:theme="Theme.Black" 背景黑色
•android:theme="Theme.Black.NoTitleBar" 黑色背景并无标题栏
•android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,无标题栏,全屏
•android:theme="Theme.Wallpaper" 用系统桌面为应用程序背景
•android:theme="Theme.Wallpaper.NoTitleBar" 用系统桌面为应用程序背景,且无标题栏
•android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系统桌面为应用程序背景,无标题栏,全屏
•android:theme="Translucent" 背景为透明
•android:theme="Theme.Translucent.NoTitleBar" 透明背景并无标题栏
•android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 透明背景并无标题栏,全屏
•android:theme="Theme.Panel" 内容容器
•android:theme="Theme.Light.Panel" 背景为白色的内容容器
AppCompat_v7兼容包主题细分:(以'com.android.support:appcompat-v7:25.1.0'为例:)
Theme.AppCompat 作用于Activity层面以上的主题
Base、Platform 作为父类被继承的,一般不直接使用
AlertDialog.AppCompat 对话框深色
AlertDialog.AppCompat.Light 对话框浅色
Animation.AppCompat.Dialog 带动画效果的对话框
Animation.AppCompat.DropDownUp
RtlOverlay.Widget.AppCompat
RtlUnderlay.Widget.AppCompat
TextAppearance.AppCompat 文字样式相关
ThemeOverlay.AppCompat
Widget.AppCompat 控件相关的主题
关于Theme.ApCompat兼容主题
主题间的继承关系:(以Theme.AppCompat为例)
Theme.AppCompat ——> Base.Theme.AppCompat
Base.Theme.AppCompat ——> Base.V*.Theme.AppCompat (*可能是7、21、23等)
Base.V*.Theme.AppCompat ——> Platform.AppCompat
Platform.AppCompat ——> android:Theme
其中第二步:版本25.1.0有四种选择:Base、Base.V21、Base.V22、Base.V23。(更早的版本还有V7、V11等)
兼容:App在运行时会根据系统的版本选择对应的父类主题。大于21选择V21,大于22选择V22
系统通常预定义的主题样式:
Theme.AppCompat 深色主题
Theme.AppCompat.NoActionBar 没有ActionBar
Theme.AppCompat.Dialog 对话框适用
Theme.AppCompat.Dialog.Alert 警告框适用(根据屏幕决定宽度)
Theme.AppCompat.Dialog.MinWidth 对话框适用(根据内容决定宽度)
Theme.AppCompat.DialogWhenLarge 充满屏幕(继承自Theme.AppCompat,但没有扩展)
Theme.AppCompat.CompactMenu 看名字是用于Menu菜单。未验证
其他主题系统默认都会有上述几种类型的子主题,以此类推就好。
例如:浅色主题只需要将Theme.AppCompat 替换成 Theme.AppCompat.Light即可
四,为什么需要Theme.AppCompat主题?
那么这个Theme.AppCompat到底是什么呢?就要从其他的三个系统基本主题说起
1,android:Theme
2,android:Theme.Holo
3,android:Theme.Material
是的,这三个主题就对应了上一节说的三种Android主题。
android:Theme是所有主题的超级父类
。
所有的主题都是它继承或者间接继承来的。android:Theme.Holo从Api 11开始才可以使用。android:Theme.Material从Api 21开始可以使用。
如果我们要在不同版本的系统上用各自的主题,比如在
4.0之下的系统用android:Theme
,
4.0至5.0的系统用Holo主题
,
5.0及之后的系统使用Material Design,那我们需要建不同的value-vX目录
。在各自的目录中的style继承相应的系统主题。在运行是系统就会根据平台版本使用相应的主题。如果使用的主题没有找到,那么系统就会根据App指定的targetSdkVersion自动设置主题,假如设置的targetSdkVersion超过了系统的版本,系统就设置为支持的最高系统sdk版本的主题。
最后一句话怎么理解,举个例子,如果在我们在Api 24的sdk下进行开发,设置我们的应用targetSdkVersion=16,应用的资源目录下建立value-16,这是针对4.4以上平台的资源目录,在styles.xml中我们继承android:Theme.Material,这很明显是在5.0系统之上才能用的。虽然Android Studio会给出提示,但可以编译通过。现在我们把App放在一台4.4的机器上跑,这时系统是找不到android:Theme.Material这个主题的。那么系统就会看targtSdkVersion,发现是16,所以系统就会将App的主题设置为Holo的。如果我们其他的所有配置都不变,只把targetSdkVersion改成9,系统就会把App的主题设置为android:Theme的主题。这时如果把targetSdkVersion改成24,4.4的机器是不支持24的,那么出来的效果依然是android:Theme.Holo主题。
那么有同学就要问了,
如果我要在Android 4.4(支持Holo主题)的机器上使用Material主题(Android 5.0)怎么办呢?(就是低版本要使用高版本的系统主题)没事,Google已经帮我们想好了解决方案。毕竟Google希望在不同的平台和版本上推广Material Design嘛。这样才能给用户提供一致性的体验。介于此,Android里就有了Theme.AppCompat主题和AppCompatActivity。细心的同学也会发现现在用Android Studio新建一个工程,默认的MainActivity继承的是AppCompatActivitiy,默认的主题就是Theme.AppCompat。
我们先来说
Theme.AppCompat,这个主题可以让5.0以下的系统使用Material主题
。我们只需要让我们的系统主题继承Theme.AppCompat即可。只需要指定这个就OK了,是不是很简单。
有必要说的是,
使用了Theme.AppCompat之后,targetSdkVersion就不受影响了。继续拿上一节的例子说,在Api24 Sdk下开发,targtSdkVersion=9,跑在4.4的机器上,你会发现依然是Material主题。
所以可以总结出,应用使用了Theme.AppCompat主题,不论我们的targetSdkVersion指定为多少,跑在任意版本的系统上都会呈现出Material主题。
五,Android Material Design 详解(使用support v7兼容5.0以下系统)
Material Design是Google在2014年的I/O大会上推出的全新设计语言。
Material Design是基于Android 5.0(API level 21)的,兼容5.0以下的设备时需要使用版本号v21.0.0以上的support v7包中的appcpmpat
,不过遗憾的是support包只支持Material Design的部分特性。使用eclipse或Android Studio进行开发时,直接在Android SDK Manager中将Extras->Android Support Library升级至最新版即可。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
1.创建一个Android应用,应用主题Theme.AppCompat(或其子主题,如Theme.AppCompat.Light.DarkActionBar)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "24.0.3"
defaultConfig {
applicationId "com.tuke.customtheme"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
本文中示例程序使用minSdkVersion=15,即属于使用support包实现Material Design风格
自动生成的activity默认继承AppCompatActivity
public class CustomTheme extends AppCompatActivity {//继承AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_theme);
CustomTheme的主题默认是
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here.自定义你的主题 -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
2.如果想自定义主题,自定义程序所使用的主题的某些属性,示例:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here.自定义你的主题 -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorPrimary">@color/textColorPrimary</item>
<item name="android:windowBackground">@color/windowBackground</item>
<item name="android:textColor">@color/textColor</item>
<item name="android:colorControlNormal">@color/colorControlNormal</item>
</style>
<style name="myTheme" parent="android:t">
</style>
</resources>
1.colorPrimary 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色
2.colorPrimaryDark 应用的主要暗色调,statusBarColor默认使用该颜色
3.statusBarColor 状态栏颜色,默认使用colorPrimaryDark
4.windowBackground 窗口背景颜色
5.navigationBarColor 底部栏颜色
6.colorForeground 应用的前景色,ListView的分割线,switch滑动区默认使用该颜色
7.colorBackground 应用的背景色,popMenu的背景默认使用该颜色
8.colorAccent CheckBox,RadioButton,SwitchCompat等一般控件的选中效果默认采用该颜色
9.colorControlNormal CheckBox,RadioButton,SwitchCompat等默认状态的颜色。
10.colorControlHighlight 控件按压时的色调
11.colorControlActivated 控件选中时的颜色,默认使用colorAccent
12.colorButtonNormal 默认按钮的背景颜色
13.editTextColor: 默认EditView输入框字体的颜色。
14.textColor Button,textView的文字颜色
15.textColorPrimaryDisableOnly RadioButton checkbox等控件的文字
16.textColorPrimary 应用的主要文字颜色,actionBar的标题文字默认使用该颜色
17.colorSwitchThumbNormal: switch thumbs 默认状态的颜色. (switch off)
Android5.0设置主题样式:
<style name="RedTheme" parent="android:Theme.Material">
<!-- 状态栏颜色,会被statusBarColor效果覆盖-->
<item name="android:colorPrimaryDark">@color/status_red</item>
<!-- 状态栏颜色,继承自colorPrimaryDark -->
<item name="android:statusBarColor">@color/status_red</item>
<!-- actionBar颜色 -->
<item name="android:colorPrimary">@color/action_red</item>
<!-- 背景颜色 -->
<item name="android:windowBackground">@color/window_bg_red</item>
<!-- 底部栏颜色 -->
<item name="android:navigationBarColor">@color/navigation_red</item>
<!-- ListView的分割线颜色,switch滑动区域色-->
<item name="android:colorForeground">@color/fg_red</item>
<!-- popMenu的背景色 -->
<item name="android:colorBackground">@color/bg_red</item>
<!-- 控件默认颜色 ,效果会被colorControlActivated取代 -->
<item name="android:colorAccent">@color/control_activated_red</item>
<!-- 控件默认时颜色 -->
<item name="android:colorControlNormal">@color/control_normal_red</item>
<!-- 控件按压时颜色,会影响水波纹效果,继承自colorAccent -->
<item name="android:colorControlHighlight">@color/control_highlight_red</item>
<!-- 控件选中时颜色 -->
<item name="android:colorControlActivated">@color/control_activated_red</item>
<!-- Button的默认背景 -->
<item name="android:colorButtonNormal">@color/button_normal_red</item>
<!-- Button,textView的文字颜色 -->
<item name="android:textColor">@color/white_text</item>
<!-- RadioButton checkbox等控件的文字 -->
<item name="android:textColorPrimaryDisableOnly">@color/white_text</item>
<!-- actionBar的标题文字颜色 -->
<item name="android:textColorPrimary">@color/white_text</item>
</style>
参考文章:
http://blog.csdn.net/jack__frost/article/details/51998863
http://www.2cto.com/kf/201412/362272.html
http://blog.csdn.net/wjc295/article/details/54347807
http://www.cnblogs.com/Jude95/p/4369816.html
http://blog.csdn.net/zl18603543572/article/details/49754933
http://www.aoaoyi.com/archives/623.html
5.2 实现滑动的七种方法 91
5.2.1 layout方法 92
5.2.2 offset Left And Right()与offset Top And Bottom() 93
5.2.3 Layout Params 93
5.2.4 scroll To与scrollBy 94
5.2.5 Scroller 96
5.2.6 属性动画 98
5.2.7 View Drag Helper 98
第6章 Android绘图机制与处理技巧 106
6.1 屏幕的尺寸信息 107
6.1.1 屏幕参数 107
6.1.2 系统屏幕密度 107
6.1.3 独立像素密度dp 107
6.1.4 单位转换 108
6.22D绘图基础 110
6.3 Android XML绘图 113
6.3.1 Bitmap 113
6.3.2 Shape 113
6.3.3 Layer 115
6.3.4 Selector 116
6.4 Android绘图技巧 117
6.4.1 Canvas 117
6.4.2 Layer图层 121
6.5 Android图像处理之色彩特效处理 122
6.5.1 色彩矩阵分析 122
6.5.2 Android颜色矩阵——ColorMatrix 128
6.5.3 常用图像颜色矩阵处理效果 131
6.5.4 像素点分析 134
6.5.5 常用图像像素点处理效果 135
6.6 Android图像处理之图形特效处理 137
6.6.1 Android变形矩阵——Matrix 137
6.6.2 像素块分析 142
6.7 Android图像处理之画笔特效处理 145
6.7.1 Porter Duff Xfermode 145
6.7.2 Shader 149
6.7.3 Path Effect 153
6.8 View之孪生兄弟——SurfaceView 155
6.8.1 Surface View与View的区别 155
6.8.2 Surface View的使用 156
6.8.3 Surface View实例 159
第7章 Android动画机制与使用技巧 162
7.1 Android View动画框架 163
7.1.1 透明度动画 163
7.1.2 旋转动画 163
7.1.3 位移动画 164
7.1.4 缩放动画 164
7.1.5 动画集合 164
7.2 Android属性动画分析 165
7.2.1 ObjectAnimator 166
7.2.2 PropertyValuesHolder 168
7.2.3 ValueAnimator 168
7.2.4 动画事件的监听 168
7.2.5 Animator Set 169
7.2.6 在XML中使用属性动画 170
7.2.7 View的animate方法 170
7.3 Android布局动画 171
7.4 Interpolators(插值器) 171
7.5 自定义动画 172
7.6 Android 5.X SVG矢量动画机制 175
7.6.1 <path>标签 175
7.6.2 SVG常用指令 176
7.6.3 SVG编辑器 177
7.6.4 Android中使用SVG 177
7.6.5 SVG动画实例 181
7.7 Android动画特效 188
7.7.1 灵动菜单 188
7.7.2 计时器动画 190
7.7.3 下拉展开动画 191
第8章 Activity与Activity调用栈分析 195
8.1 Activity 196
8.1.1 起源 196
8.1.2 Activity形态 196
8.1.3 生命周期 196
8.2 Android任务栈简介 200
8.3 Android Mainifest启动模式 200
8.3.1 standard 201
8.3.2 single Top 201
8.3.3 single Task 201
8.3.4 single Instance 202
8.4 Intent Flag启动模式 203
8.5 清空任务栈 203
8.6 Activity任务栈使用 204
第9章 Android系统信息与安全机制 205
9.1 Android系统信息获取 206
9.1.1 android.os.Build 206
9.1.2 System Property 207
9.1.3 Android系统信息实例 208
9.2 Android Apk应用信息获取之Package Manager 209
9.2.1 Package Manager 210
9.3 Android Apk应用信息获取之Activity Manager 215
9.4 解析Packages.xml获取系统信息 218
9.5 Android安全机制 220
9.5.1 Android安全机制简介 220
9.5.2 Android系统安全隐患 222
9.5.3 Android Apk反编译 223
9.5.4 Android Apk加密 226
第10章 Android性能优化 227
10.1 布局优化 228
10.1.1 Android UI渲染机制 228
10.1.2 避免Overdraw 229
10.1.3 优化布局层级 229
10.1.4 避免嵌套过多无用布局 229
10.1.5 Hierarchy Viewer 234
10.2 内存优化 236
10.2.1 什么是内存 236
10.2.2 获取Android系统内存信息 237
10.2.3 内存回收 238
10.2.4 内存优化实例 238
10.3 Lint工具 240
10.4 使用Android Studio的Memory Monitor工具 240
10.5 使用Trace View工具优化App性能 241
10.5.1 生成Trace View日志的两种方法 241
10.5.2 打开Trace View日志 242
10.5.3 分析Trace View日志 242
10.6 使用MAT工具分析App内存状态 244
10.6.1 生成HPROF文件 244
10.6.2 分析HPROF文件 245
10.7 使用Dumpsys命令分析系统状态 247
第11章 搭建云端服务器 248
11.1 移动后端服务介绍 249
11.2 使用Bmob创建移动后端服务 250
11.2.1 数据服务 251
11.2.2 推送服务 254
第12章 Android 5.X新特性详解 257
12.1 Android 5.X UI设计初步 258
12.1.1 材料的形态模拟 258
12.1.2 更加真实的动画 258
12.1.3 大色块的使用 259
12.2 Material Design主题 260
12.3 Palette 261
12.4 视图与阴影 263
12.5 Tinting和Clipping 265
12.5.1 Tinting(着色) 265
12.5.2 Clipping(裁剪) 267
12.6 列表与卡片 269
12.6.1 Recycler View 269
12.6.2 Card View 275
12.7 Activity过渡动画 276
12.8 Material Design 动画效果 283
12.8.1 Ripple效果 283
12.8.2 Circular Reveal 285
12.8.3 View state changes Animation 288
12.9 Toolbar 293
12.10 Notification 296
12.10.1 基本的Notification 297
12.10.2 折叠式Notification 298
12.10.3 悬挂式Notification 300
12.10.4 显示等级的Notification 301
第13章 Android实例提高 303
13.1 移动迷宫——拼图游戏 304
13.1.1 准备工作 305
13.1.2 初始界面 307
13.1.3 拼图界面 312
13.1.4 效果预览与功能进阶 324
13.2 魔幻矩阵——2048325
13.2.12048概述 325
13.2.22048游戏分析 326
13.2.32048初始化工作 327
13.2.4 小方块设计 328
13.2.5 全局设置 330
13.2.6 游戏面板设计 332
13.2.7 主程序设计 340
13.2.8 功能进阶 341
13.3 实战经验总结 342
一,Theme主题
1.1,Theme主题作用范围
Theme主要是针对应用级别的或者说窗体级别,可以设置应用主题(应用换肤效果)或者Activity的主题;主题是不能应用在某一个单独的View中;
1.2,Theme主题的定义
在AS中res/values/style.xml中定义,例如新建项目AS自动创建的Theme,是系统提供;
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
Android系统提供的主题在:..\platforms\android-29\
java导出源码
bytelife
java、android、bigdata、linux相关的多年一线开发经验的整理总结,以思维导图+源码的方式呈现出来。适合从初学者到高级工程师各个阶段的知识点学习与查询,有利于形成整体的知识架构体系。
包含23个主题,各个主题是独立存在的,每个主题的内容与思维导图中总结的各个分支是直接的关联的,点击思维导图的节点可以直接打开相关资源。有任何问题请发邮件到。
本书以Android应用程序的开发为主题,并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程。本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为18章,分别讲解了UI布局实例集锦、控件实例集锦、自动化服务实例集锦、数据存储实例集锦、电话和短信实例集锦、图形图像实例集锦、和网络有关的实例集锦、多媒体实例集锦、Google地图实例集锦、GoogleAPI实例集锦、平板应用实例集锦、游戏应用与程序优化。并且在本书最后,通过4个大型综合实例,分别介绍了开发手机地图系统、音乐播放器系统、NBA激情投篮游戏、综合邮件系统的基本过程。
第1章 UI布局开发实例集锦 1
实例001: 使用线性布局(LinearLayout)
来布局屏幕 1
实例002: 使用相对布局(RelativeLayout)来布局屏幕 3
实例003: 使用表格布局(TableLayout)
来布局屏幕 5
实例004: 使用绝对布局(AbsoluteLayout)
来布局屏幕 6
实例005: 使用标签布局(TabLayout)来
布局屏幕 8
实例006: 使用层布局(FrameLayout) 10
实例007: 创建一个桌面组件Widget 11
实例008: 在屏幕中实现一个按钮效果 12
实例009: 在屏幕中显示文字 13
实例010: 在屏幕中显示编辑框 17
实例011: 在屏幕中显示复选框 18
实例012: 在屏幕中显示单选框 21
实例013: 在屏幕中显示下拉列表框 22
实例014: 在屏幕中实现自动输入文本
效果 26
实例015: 使用日期选择器控件DatePicker 28
实例016: 自动选择一个输入时间 30
实例017: 实现屏幕自动滚动 32
实例018: 实现一个进度条效果 32
实例019: 开发一个评分程序 35
实例020: 在屏幕中显示一幅指定的图片 36
实例021: 设置一幅图片作为按钮来使用 38
实例022: 实现QQ空间中的显示照片
效果 40
第2章 控件开发实例集锦 44
实例023: 显示在文本框中输入的信息 44
实例024: 使用RadioGroup控件实现选
项选择功能 46
实例025: 使用CheckBox控件实现同意
条款效果 48
实例026: 使用Spinner控件实现选项选择 51
实例027: 使用Gallery控件实现个人相
簿功能 55
实例028: 开发一个文件搜索程序 58
实例029: 单击按钮后实现按钮置换 60
实例030: 模拟实现一个时钟界面效果 62
实例031: 联合使用DatePicker和TimePicker
来选择日期和时间 65
实例032:动态分隔手机屏幕 68
实例033:使用ListActivity实现动态菜单
列表 71
实例034:加载手机磁盘中的文件 73
实例035:实现抽屉样式效果 76
实例036:在屏幕中动态显示多种对话框 82
实例037:手机秘书--重要事情提醒 88
实例038:动态添加或删除菜单 96
实例039: 自定义Android控件实现单选
按钮 100
实例040: 使用自定义控件在屏幕中绘
制一条虚线 104
实例041: 在屏幕中实现手风琴效果 106
第3章 自动化服务实例集锦 109
实例042: 自动获取手机屏幕的分辨率 109
实例043: 自动获取手机电池的剩余电量
实例044: 来电时自动发送信息提醒 115
实例045: 获取手机存储卡的容量 119
实例046: 操作存储卡和内存卡中的数据
实例047: 设置闹钟 129
实例048: 实现黑名单来电自动静音处理
实例049: 设置一个自动开机界面 138
实例050: 更换手机屏幕背景图片系统 140
实例051: 设置自动更换手机桌面背景 144
实例052: 自动控制后台系统服务 154
实例053: 在屏幕中拖动一个按钮 157
第4章 数据存储实例集锦 163
实例054: 在屏幕中显示SharedPreferences
中存储的信息 163
实例055: 演示数据添加、删除等操作 165
实例056: 编写一个手机日记本程序 170
实例057: 使用ContentProvider开发一个
手机日记本 177
实例058: 使用文件保存数据 188
实例059: 将网上的图片保存到SD卡并在
手机中显示出来 190
实例060: 保存联系人信息 194
第5章 电话和短信实例集锦 197
实例061: 编写一个拨号程序 197
实例062: 发送一条短信 200
实例063: 单击按钮实现拨号功能 203
实例064: 一个通用发短信程序 206
实例065: 收到短信后用E-mail邮件进行
通知 210
实例066: 实现触屏拨号功能 214
实例067: 一个短信群发程序 215
实例068: 来电后自动发送邮件通知 219
实例069: 监听手机拨接状态 220
实例070: 检查短信是否发送成功 223
第6章 图形图像实例集锦 229
实例071: 在屏幕中绘制一个矩形 229
实例072: 在屏幕中绘制一个画布 232
实例073: 实现水纹的透明效果 235
实例074: 渲染几何图形 239
实例075: 用图片为背景实现动画效果 242
实例076: 在手机屏幕中实现Frame动画
效果 244
实例077: 对图片进行缩放处理 246
实例078: 旋转屏幕中的图片 250
实例079: 实现旗帜飞扬的效果 253
实例080: 模拟构建一个3D场景效果 258
实例081: 模拟实现粒子系统效果 261
实例082: 在Canvas中写文字 265
实例083: 移动屏幕中的图片 272
实例084:在屏幕中绘制一个三维圆柱体
实例085: 获取并显示图片的宽和高 285
实例086: 编写一个手机屏保程序 287
实例087: 以触摸方式移动图片 295
第7章 和网络有关的实例集锦 299
实例088: 传递HTTP参数 299
实例089: 在屏幕中使用HTML程序 303
实例090: 在手机中浏览网页 304
实例091: 使用内置浏览器打开网页 305
实例092: 显示QQ空间中的照片 307
实例093: 通过RSS系统在线浏览新闻 309
实例094: 下载网络图片作为手机背景 320
实例095: 将文件上传至服务器 323
实例096: 开发一个移动博客发布器 326
实例097: 远程下载并安装一个软件 331
实例098: 控制蓝牙系统 336
第8章 多媒体实例集锦 346
实例099: 播放一个指定的MP3文件 346
实例100: 调节手机音量的大小 350
实例101: 实现相机预览和拍照功能 353
实例102: 在手机中播放影片 360
实例103: 手机录音系统 363
实例104: 设置手机中的铃声 368
实例105: 在线播放网络中的MP3 371
实例106: 在线下载音乐作为手机铃声 379
实例107: 播放GIF格式的动画 385
实例108: 在手机中播放MP4视频 391
实例109: 在线观看3GP视频 394
第9章 Google地图实例集锦 403
实例110: 定位当前位置的坐标 403
实例111: 在手机中使用Google地图 406
实例112: 在地图中定位输入的坐标 413
实例113: 在地图中快速查询某个位置 416
实例114: 随着手机的移动自动更新位置
实例115: 在手机地图中描绘线路并计算
线路距离 423
实例116: 在Google地图中显示指定的
位置 430
实例117: 在手机地图中查询一个地址 432
实例118: 在手机中实现地址查询 434
实例119: 开发一个路径导航系统 438
第10章 Google API实例集锦 446
实例120: 模拟验证官方账号 446
实例121: 在手机中开发一个Google搜索
程序 453
实例122: 在手机中编写一个翻译软件 458
实例123: 生成一个二维码 460
实例124: 使用Google Chart API生成二
维码 463
第11章 平板应用 469
实例125: 开发一个音乐播放器 469
实例126: 开发一个在线天气播报系统 475
实例127: 开发一个网页浏览程序 485
实例128: 使用文件来保存音乐状态 491
实例129: 在屏幕中显示不同的进度条
效果 494
第12章 游戏应用 498
实例130: 一个简单的贪吃蛇游戏 498
实例131: 开发一个魔塔游戏 504
实例132: 疯狂足球游戏 524
第13章 Android程序优化 547
实例133: 测试计算机的性能 547
实例134: 测试内存性能 550
实例135: 优化Android模拟器 553
实例136: 使用merge标签优化UI界面 556
实例137: 优化Android Layout 559
实例138: 优化Bitmap图片 560
第14章 综合实例--手机地图系统 563
实例139: 使用Google地图开发一个综合
地图系统 563
14.1 项目分析 563
14.1.1 规划UI界面 563
14.1.2 数据存储设计 564
14.2 具体实现 565
14.2.1 新建工程 565
14.2.2 主界面 565
14.2.3 新建界面 567
14.2.4 设置界面 570
14.2.5 帮助界面 574
14.2.6 地图界面 576
14.2.7 数据存取 587
14.2.8 实现Service服务 592
14.3 发布自己的作品来赢利 594
14.3.1 申请成为会员 594
14.3.2 生成签名文件 597
14.3.3 使用签名文件 602
14.3.4 发布 604
第15章 综合实例--音乐播放器系统 605
实例140:开发一个音乐播放器 605
15.1 项目介绍 605
15.1.1 项目背景介绍 605
15.1.2 项目目的 606
15.1.3 对读者的意义 606
15.2 需求分析 606
15.2.1 构成模块 606
15.2.2 功能结构图 609
15.2.3 系统功能说明 610
15.2.4 总体目标 610
15.3 设计数据库 611
15.3.1 字段设计 611
15.3.2 数据库连接 611
15.3.3 创建数据库 612
15.3.4 操作数据库 613
15.3.5 数据显示 614
15.4 具体编码 615
15.4.1 服务信息主界面 615
15.4.2 播放器主界面 616
15.4.3 播放列表功能 628
15.4.4 菜单功能模块 631
15.4.5 播放设置界面 634
15.4.6 设置显示歌词 638
15.4.7 文件浏览器模块 639
第16章 体育类游戏--NBA激情投篮 644
实例141:NBA激情投篮 644
16.1 项目介绍 644
16.1.1 意义和技术分析 644
16.1.2 策划游戏 645
16.1.3 准备工作 645
16.2 项目架构 646
16.2.1 总体架构 646
16.2.2 规划类 646
16.3 具体编码 648
16.3.1 编写主类LanqiuActivity 648
16.3.2 编写常量类 652
16.3.3 设计游戏试玩界面 658
16.3.4 绘制游戏场景 663
第17章 综合邮件系统 672
实例142:开发一个综合邮件系统 672
17.1 项目介绍 672
17.1.1 项目背景介绍 672
17.1.2 项目目的 672
17.2 系统需求分析 673
17.2.1 构成模块 673
17.2.2 系统流程 675
17.2.3 功能结构图 676
17.2.4 系统功能说明 677
17.2.5 系统需求 677
17.3 数据存储设计 677
17.3.1 用户信息类 678
17.3.2 SharedPreferences 682
17.4 具体编码 684
17.4.1 欢迎界面 684
17.4.2 系统主界面 687
17.4.3 邮箱类型设置 694
17.4.4 邮箱收取设置 697
17.4.5 邮箱发送设置 703
17.4.6 邮箱用户检查 708
17.4.7 设置用户别名 713
17.4.8 用户邮件编辑 716
17.5 总结 723
Android自定义ActionBar背景颜色修改前后效果图: 在style.xml里加一行代码搞定@color/green那为什么是"colorPrimary"呢,一层一层找这里已经出现“colorPrimary"了@style/ThemeOverlay.AppCompat.Light@null@style/ThemeOverlay.AppCompat.Dark.ActionBar@drawa...
这是Android Studio创建新项目后,默认的Empty Activity的布局。
不知道有多少同学和我一样觉得App标题和头顶状态栏的紫色很丑。今天的笔记就是记录一下怎么修改主题颜色。
一、找到主题文件
我们打开项目的AndroidManifest.xml,可以看到有一行是用来指定主题的。
Android设备和iOS设备的界面风格比较起来,说实话Android的默认UI组件最多只是可以看,绝对比不上iPhone默认组件那么好看和耐看。不过Android系统的开放性很高,我们可以从头到尾改变的它界面显示,那么本文就介绍一下android主题开发的Style和Theme。1、什么是Style,什么是Theme?Style 和 theme:是一个包含一种或者多种格式化属性的集合 ,并且st...
本文出自门心叼龙的博客,转载请注明出处: https://blog.csdn.net/geduo_83/article/details/86560896
1. 什么是Style,什么是Theme?
2. 在定义Theme的时候@符号和?符号有何区别?
3. 怎么通过代码给一个Activity设置主题?
4. AppTheme主题颜色colorPrimary,colorPrimaryDark,colorAccent都是什么的颜色?
5.常见的主题风格都有哪些?
6.ThemeOverlay使用特点
组件化多业务模块情况下,各模块中存在一些字号、颜色等样式定义、引用相对混乱的现象。大部分业务开发同学会随意使用颜色和字体等,没有明确的统一格式进行调用。因此,导致项目中相关重复定义颜色字号增多失控,不易维护,增加包体积,开发同学的在使用上不够简单高效,经常编写重复代码。
要使用MD风格控件,首先需要在Gradle中加入Support Design Library,例如:compile 'com.android.support:design:24.1.1'一、CoordinatorLayout1、CoordinatorLayout + AppBarLayout布局文件代码如下:xmlns:app="http://schemas.android.com/apk/res...