黑马程序员技术交流社区

标题: 【阳哥专栏】黑马Android教程-Android基础04样式主题_国际化 [打印本页]

作者: 王震阳老师    时间: 2015-3-3 20:09
标题: 【阳哥专栏】黑马Android教程-Android基础04样式主题_国际化
本帖最后由 王震阳老师 于 2015-3-23 22:22 编辑

Android基础-04Android基础04样式主题_国际化

黑马程序员上海校区招生火爆开启!阳哥约你在上海!



pdf附件内容回复可见:


1. Android中的样式和主题(★★1.1样式
样式是作用在控件上的,是它是一个包含一个或者多个view控件属性的集合,例如定义属性fontColorfontSizelayout_widthlayout_height等,以独立的资源文件存放在XML文件中,并设置样式的名称。
Android Style类似网页设计中的级联样式CSS设计思路,可以让设计与内容分离,并且可以方便的继承、覆盖、重用。
下面通过一个简单的案例演示自定义样式的用法,在该案例中,我们自定义一个样式用于渲染Button控件的显示效果。
我们新创建一个Android工程,工程名称《样式和主题》。直接使用默认布局文件和默认Activity类。
打开工程中res->values->styles.xml文件,添加如下样式。
在默认布局文件中使用上面的自定义样式。我们只需在如下布局文件中给Button一个style="@style/btn_style"属性,那么所有属性都会作用在该Button上。
执行上面代码的效果如图:
:同CSS一样,样式的引入遵循就近原则,在控件上定义的属性会覆盖被引入的样式中
的同一个属性。
1.2主题
主题的定义与样式的定义相同,都是定义在styles.xml文件下,且均可以通过设置parent属性来继承一个父样式,不同之处在于主题是作用在Activity上的。
主题通过定义AndroidManifest.xml文件中的<application>和<activity>节点下的”android:theme”属性作用在整个应用或者某个Activity,主题对整个应用或某个Activity进行全局性影响。如果一个应用使用了主题,同时应用下的view也使用了样式,那么当主题和样式属性发生冲突时,样式的优先级高于主题。
android系统也定义了一些主题,例如:<activity android:theme=“@android:style/Theme.Dialog”>,该主题可以让Activity看起来像一个对话框,还有透明主题:@android:style/Theme.Translucent。如果需要查阅这些主题,可以在文档的reference-->android-->R.style中查看。
继续使用本文档1.1中创建的工程。在res->values->styles.xml中添加如下样式:
在AndroidManifest.xml中给添加样式,如下图清单黄色高亮部分。
也可以在Activity类中通过Java代码动态设置样式。
程序运行效果图比较简单,在这里就不再展示。
2. Android实现国际化(★★
国际化的英文单词是Internationalization,因为这个单词太长了,有时也简称为I18N,其中的I是这个单词的第一个字符,18表示中间省略的字母个数,而N代表这个单词的最后一个字母。所以,I18N也就是国际化的意思。
Android程序国际化,也就是程序可以根据系统所使用的语言,将界面中的文字翻译成与之对应的语言。这样,可以让程序更加通用。Android可以通过资源文件非常方便的实现程序的国际化。
2.1 Android中如何实现国际化
在编写Android项目时,通常都是将程序中要使用的字符串资源放置在res/values目录下的strings.xml文件中,为了给这些字符串资源实现国际化,可以在Android项目的res目录下,创建对应于各个语言的资源文件夹(例如,为了让程序兼容简体中文、繁体中文和美式英文,可以分别创建名称为values-zh-rCN、values-zh-rTW和values-en-rUS的文件夹),然后在每个文件夹中创建一个对应的strings.xml文件,并在该文件中定义对应语言的字符串即可。这样,当程序运行时,就会自动根据操作系统所使用的语言来显示对应的字符串信息了。
图片也可以进行国际化,同字符串的国际化类似,只需根据程序要兼容的语言版本,分别创建名称类似drawable-zh-rCN,drawable-zh-rTW这样的文件夹,将图片资源存放在文件夹下即可。
2.2国际化示例
下面通过一个案例来演示国际化的使用方法。
在res文件下分别创建values-zh-rCN和values-zh-rTW文件夹,分别在两个文件夹下创建strings.xml文件。
给values-zh-rCN/settings.xml添加内容如下:

给values-zh-rTW/settings.xml添加内容如下:

在res文件下分别创建drawable-zh-rCN和drawable-zh-rTW文件夹,向里面各自添加一个flag.jpg的图片。第一个为为五星红旗、第二个为青天白日旗。图片的名字必须一致。
修改该工程的默认布局文件

设置模拟器的语言为简体中文。Menu->System settings->Language&input->Language->中文(简体)。然后运行改程序,效果图如下:
设置模拟器的语言为简体中文。Menu->System settings->Language&input->Language->中文(繁体)。然后运行改程序,效果图如下:
3. Android中的动画(★★★
Android 3.0以前,Android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation。 在本文档中只介绍tween animation和frame animation。
        Frame Animation(帧动画):创建一个Drawable序列,这些Drawable可以按照指定的时间间隔一个一个的显示,也就是顺序播放事先做好的图像。
        Tween Animation(渐变动画):通过对特定的对象做图像变换如平移、缩放、旋转、淡出/淡入等产生动画效果。
3.1帧动画FrameAnimation
创建一个Drawable序列,这些Drawable可以按照指定的时间间隔一个一个的显示,也就是顺序播放事先做好的图像,跟放胶片电影类似。
下面通过一个案例来演示帧动画的使用方法。新创建一个工程《Android中的动画》。
将准备好的图片文件放到res/drawable-hdpi目录中。
如果大家缺乏图片资源可以随便放进去几张图片就行,只要起到练习代码的作用就行。
在项目的res目录下创建文件夹drawable,然后在文件夹下面定义动画XML文件,文件名称可以自定义(也可以使用AnimationDrawable类,采用代码方式定义动画效果),这里给改xml文件起名为frame_anim.xml。
打开创建好的xml文件,在里面添加根节点<animation-list>,可以在此根节点中设置属性”android:oneshot”来控制动画只播放一次,否则系统将默认持续播放。
在根节点<animation-list>下为帧动画的每幅图片添加一个<item>节点,节点的”android:drawable”属性是图片的资源id,”android:duration”属性指定图片展示的时间(一般每秒展示5-8张图片就可以感受到动画的效果)。
编写默认的Activity类。
运行该程序效果如下图:
3.2[color=rgb(87, 137, 220) !important][url=]渐变动画TweenAnimation[/url]
渐变动画也叫补间动画。补间动画通过对View的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用java代码来做。补间动画有4种类型:
补间动画的常用方法:
Animation:
★        setDuration        设置动画的执行时间
           ★        setRepeatCount        设置动画的重复次数
         ★        setRepeatMode        指定重复的模式(如:反转)
           ★        setFillAfter        指示动画指定完毕之后控件的状态是否停留在动画停
止的时候
           ★  setAnimationListener        设置动画的事件监听器
ImageView:
★  startAnimation(Animation a) 让ImageView执行某动画
3.2.1 Alpha 渐变动画
渐变动画在代码中使用的是AlphaAnimation类来定义, 在XML文件中使用<alpha>节点来定义。
下面分别演示使用XML文件和Java代码的方式实现Alpha渐变动画。在这里依然使用本文档3.1章节中的工程。
        使用XML文件实现Alpha动画
在res目录下创建anim文件夹
在anim文件夹中创建alpha_anim.xml文件,文件名自定义
编辑alpha_anim.xml文件,文件清单如下。
添加Java逻辑代码:使用AnimationUtils工具类加载xml文件,获取Animation对象;调用startAnimation让ImageView执行此动画。
:这里需要在3.1章节的默认布局文件(activity_main.xml)中添加一个Button,并为该Button指定android:onClick="startAlphaAnimation"属性,在MainActivity中实现该方法。方法清单如下:
运行效果截图比较简单,且截图是静态的,因此不再给出。
        使用编码方式实现Alpha动画
3.2.2 Scale 伸缩动画
在本文档3.1章节中创建的工程中的布局文件中添加ScaleAnimation按钮,在Activity类中设置改按钮的绑定事件。布局文件十分简单,因此这里就不再给出详细布局清单。效果如下图所示。
Activity类中添加scaleAnimation(View view)方法,方法清单如下:
3.2.3 Translate 位移动画
在本文档3.1章节中创建的工程中的布局文件中添加TranslateAnimation按钮,在Activity类中设置改按钮的绑定事件。布局文件十分简单,因此这里就不再给出详细布局清单。Activity类中添加translateAnimation(View view)方法,方法清单如下:
3.2.4 Rotate 旋转
在本文档3.1章节中创建的工程中的布局文件中添加RotateAnimation按钮,在Activity类中设置改按钮的绑定事件。布局文件十分简单,因此这里就不再给出详细布局清单。Activity类中添加RotateAnimation(View view)方法,方法清单如下:
运行效果如图:

3.2.5 AnimationSet动画的集合
动画集合在代码中使用的是AnimationSet类来定义, 在XML文件中使用<set>节点来定义。
下面分别演示使用XML文件和Java代码的方式实现动画集合。在这里依然使用本文档3.1章节中的工程。
        使用XML文件实现动画
在res/anim目录下创建xml文件,anim_set.xml。文件清单如下:
在Activity中添加如下方法,实现业务功能:
        使用Java代码实现动画
在该工程的默认布局文件中添加Button,并给该Button指定一个onClick事件,触发的方法名为animationSet2在Activity类中添加如下方法:

至此,章节所有内容完!








作者: Hsidar    时间: 2015-3-3 20:25
吼吼,学习学习!
作者: Ansel    时间: 2015-3-3 21:55
谢谢分享
作者: 邓士林    时间: 2015-3-3 23:12
好东西,收藏一个
作者: qq10763582    时间: 2015-3-4 08:01
学习了哈,谢谢
作者: 大手牵小手    时间: 2015-3-4 15:24
学习ing!
作者: dsqqg    时间: 2015-3-4 16:57

点赞,点赞,点赞
作者: 2119391569    时间: 2015-3-4 18:06
好东西,收藏了!
作者: 新生小周    时间: 2015-3-4 18:13
顶,Android,方向
作者: 千殇一梦    时间: 2015-3-4 20:18
先收藏着。再看
作者: 若辰    时间: 2015-3-4 22:18
感觉以后会看懂的,先收藏了
作者: 还是菜鸟    时间: 2015-3-4 23:17
好东西,收藏
作者: 落雪    时间: 2015-3-5 10:20
正在努力跟上步伐
作者: 陈酷    时间: 2015-3-5 10:39
好东西来学习下
作者: huanxiang0220    时间: 2015-3-5 16:52
我也快来了
作者: 答拜721    时间: 2015-3-5 16:55
这个贴里面有好多精华的东西
作者: love$$-IT    时间: 2015-3-5 16:58
的了解一下。。。。。
作者: qq10763582    时间: 2015-3-6 07:02
果然精华

作者: 长工射日    时间: 2015-3-6 15:30
兄弟你有gallary的代码吗,可以分享一下吗
作者: woshishei121    时间: 2015-3-6 16:02
学习了  不错不错
作者: IT未来    时间: 2015-3-7 10:35
学习了。
作者: 唐僧    时间: 2015-3-7 22:53
我下的多了,感觉有点乱了,汗
作者: xingzjx    时间: 2015-3-8 09:19
学习中。。。
作者: 小小迪    时间: 2015-3-8 10:41
好高深的样子,以后我也可以,相信自己,相信黑马
作者: 路文龙    时间: 2015-3-8 17:04
学习学习。
作者: 谢鸿    时间: 2015-3-8 23:52
了解了解!!!
作者: 朱明仁    时间: 2015-3-9 00:57
学习了,多发点,学会了就不用培训了
作者: 埗箬    时间: 2015-3-10 09:35
继续学习
作者: 王震阳老师    时间: 2015-3-10 10:58
朱明仁 发表于 2015-3-9 00:57
学习了,多发点,学会了就不用培训了

哈哈,能学会最好。
作者: 默桑    时间: 2015-3-10 21:51
很期待的,和期待的~很喜欢~
作者: Grady    时间: 2015-3-10 21:51
好东西,收藏了
作者: wcrystal    时间: 2015-3-11 14:38
强大:victory:
作者: 739262720    时间: 2015-3-11 21:32
学习了,不错不错
作者: zhaotiao3080    时间: 2015-3-12 00:23
终于看到了

作者: 火七君    时间: 2015-3-12 09:29
理解起来要花费很长时间,先加个收藏慢慢看。谢谢王老师的分享
作者: 王震阳老师    时间: 2015-3-12 09:36
火七君 发表于 2015-3-12 09:29
理解起来要花费很长时间,先加个收藏慢慢看。谢谢王老师的分享

我写的每一篇笔记,都是黑马Android老师上课的一天内容。
作者: 火七君    时间: 2015-3-12 12:27
王震阳老师 发表于 2015-3-12 09:36
我写的每一篇笔记,都是黑马Android老师上课的一天内容。

一天的内容就很多,看来我要多加努力了,真怕被落在后面。
作者: 唐杰    时间: 2015-3-12 18:46
大家一起加油!向黑马精神学习!
作者: 王震阳老师    时间: 2015-3-12 19:37
小小迪 发表于 2015-3-8 10:41
好高深的样子,以后我也可以,相信自己,相信黑马

加油。
作者: 暗羽部落    时间: 2015-3-12 20:15
好人。整理的挺详细。
作者: 王震阳老师    时间: 2015-3-12 20:17
暗羽部落 发表于 2015-3-12 20:15
好人。整理的挺详细。

哈哈,多谢点赞。
作者: 唐杰    时间: 2015-3-13 21:14
大家加油,向黑马前进
作者: 王小健    时间: 2015-3-15 22:05
收藏备用
作者: 王小健    时间: 2015-3-23 22:00
我已经收藏起来了
作者: macover    时间: 2015-3-23 22:44
收藏先,非常感谢
作者: yh903450130    时间: 2015-3-24 08:11

学习了哈,谢谢
作者: 萍水相逢    时间: 2015-3-24 08:56
谢谢阳哥的笔记
作者: mayor125    时间: 2015-3-24 10:11
好好学习,天天向上~
作者: 执笔画梦    时间: 2015-3-25 13:19
阳哥辛苦了
作者: psttt    时间: 2015-3-28 02:10
点赞,点赞,点赞
作者: 奔跑的孙莹    时间: 2015-3-29 00:43
阳哥 我要把你的资料都下载啦 你写的太好了!
作者: weiwei10153    时间: 2015-3-31 18:32
支持一个,自己正在学习的过程中......
作者: 王震阳老师    时间: 2015-3-31 18:39
奔跑的孙莹 发表于 2015-3-29 00:43
阳哥 我要把你的资料都下载啦 你写的太好了!

感谢支持。
作者: 没劲睡觉    时间: 2015-3-31 21:20
看看  先学习学习
作者: yueyebingtong    时间: 2015-3-31 21:27
为阳哥加油!
作者: hamesksk    时间: 2015-4-1 17:31
拿附件学习04
作者: li子文    时间: 2015-4-1 18:59
太好了,怎么全的笔记,谢谢楼主
作者: 时间都去哪了    时间: 2015-4-5 00:24
很不错的笔记
作者: zhy934453950    时间: 2015-4-7 14:33
啊数据库啊~~我的弱项
作者: 剑雨飘扬    时间: 2015-4-9 18:17
感谢阳哥~
作者: Doug    时间: 2015-4-12 23:34
回帖不领题~
作者: z47057554    时间: 2015-4-13 00:11
谢谢分享,,
作者: lbl624    时间: 2015-4-13 22:06
谢谢分享啊,非常有用
作者: 鲁柯    时间: 2015-4-15 20:33
收藏起来慢慢看  
作者: sinbad88    时间: 2015-4-15 21:22
Thanks for sharing
作者: Hosing    时间: 2015-4-15 23:09
Thanks for Yang Brother's Note!
作者: 福禄娃    时间: 2015-4-18 09:43
:handshake 下载笔记咯。
作者: zhou1234    时间: 2015-4-18 22:56
辛苦了阳哥
作者: 王震阳老师    时间: 2015-4-19 08:55
zhou1234 发表于 2015-4-18 22:56
辛苦了阳哥

感谢支持。
作者: 彭春晓    时间: 2015-4-19 14:57
黑马Android教程-Android基础02基础功能
作者: 枪杆不如笔杆    时间: 2015-4-24 10:16
每帖必顶!!
作者: Catface    时间: 2015-4-28 10:19
前来学习一下
作者: ysheluo    时间: 2015-4-30 11:23
赞赞赞赞赞赞
作者: DxxD    时间: 2015-5-5 07:49
看一看:lol
作者: tream    时间: 2015-5-5 09:00
好东西,收下
作者: godmmm    时间: 2015-5-9 14:42
感觉有点难
作者: xiejun0725    时间: 2015-5-13 00:22
学习了,++
作者: liujin    时间: 2015-5-13 00:32
现在还看不懂,先收藏,以后应该用的上
作者: JARVIS_YJ    时间: 2015-5-13 09:01
看一下。。。。。。。。。
作者: 谷歌    时间: 2015-5-13 09:02
多谢分享!
作者: zoubing0405    时间: 2015-5-15 20:28
不得不给楼主点赞
作者: 武召胜    时间: 2015-5-20 21:16
谢谢分享
作者: 黄冬    时间: 2015-5-20 21:26
阳哥在上海啊,可惜我在北京啊。也准备学安卓,受教了,谢谢
作者: xiaoxu    时间: 2015-5-24 22:16
写得非常好!!!!!!
作者: yjsf216    时间: 2015-5-25 20:49
下全下全
作者: play1369    时间: 2015-5-28 00:38
多谢分享!
作者: LoveMyself    时间: 2015-5-28 00:41
感觉挺好的
作者: 海行者    时间: 2015-5-28 16:47
跟着阳哥好好学习Android
作者: 懒儿想想    时间: 2015-5-28 22:07
想看一下
作者: 王震阳老师    时间: 2015-5-28 22:53
海行者 发表于 2015-5-28 16:47
跟着阳哥好好学习Android

加油。
作者: 王震阳老师    时间: 2015-5-28 22:54
黄冬 发表于 2015-5-20 21:26
阳哥在上海啊,可惜我在北京啊。也准备学安卓,受教了,谢谢

感谢支持,不管在哪都一样,只要自己努力了就一定能有很好的收获。
作者: 想不到了解    时间: 2015-6-2 23:59
要学了赶紧下下
作者: 奋斗的黑马    时间: 2015-6-7 17:09
学习学习了
作者: 执梦而行    时间: 2015-6-7 23:44
正需要=呢:victory:
作者: Enhon1992    时间: 2015-6-8 08:03
不错啊!!!
作者: 油炸电视剧    时间: 2015-6-11 14:18
资料在手,天下我有。
作者: wolfsong    时间: 2015-6-12 12:02
温习一下,动画很详细,建议增加属性动画
作者: smartisan    时间: 2015-6-14 12:58
来看看哦 ~~~~
作者: showdy    时间: 2015-6-25 00:06
丁丁我顶啊
作者: Huan220_欢    时间: 2015-6-25 00:25
辛苦了,谢谢分享~~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2