A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王震阳老师 于 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类中添加如下方法:

至此,章节所有内容完!







163 个回复

正序浏览
谢谢阳哥
回复 使用道具 举报
牛啊66666666
回复 使用道具 举报
虽然不太懂,但是还是要顶
回复 使用道具 举报
只能说666
回复 使用道具 举报
下载看看
回复 使用道具 举报
非常给力!
回复 使用道具 举报
一直关注中.........
回复 使用道具 举报
MrFly 初级黑马 2015-12-22 02:26:19
156#
来学习样式和主题
回复 使用道具 举报
阳哥,你要是我的老师我死而无憾
回复 使用道具 举报
代码注释真是详细啊
回复 使用道具 举报
越到结课 越是害怕面试~~o(>_<)o ~~ 心里发憷
回复 使用道具 举报
感谢分享.................
回复 使用道具 举报
感谢老师分享
回复 使用道具 举报
很不错,黑马真心给力啊!
回复 使用道具 举报
好东西1!!!!!
回复 使用道具 举报
Android基础04样式主题  STYLE 还是很好用了..
回复 使用道具 举报
太给力了
回复 使用道具 举报
赞一个。。。
回复 使用道具 举报
洛克先生EN 来自手机 中级黑马 2015-10-30 23:16:32
145#
好东西啊,,多多分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马