在Eclipse中android程序项目目录结构下的res文件夹新建drawable文件夹,并在drawable文件夹下新建各类的xml样式文件,供layout文件夹下的xml布局文件引用,以满足对程序界面的需求开发。如图1和图2是drawable下xml样式文件的样式类型。
图1、drawable下xml样式文件的样式类型(一)
图2、drawable下xml样式文件的样式类型(二)
接下来我们要详细解析以下各类xml样式文件的作用及其使用方法,请点击目录查看相应解析。
2、animation-list
使用animation-list样式可以实现逐帧动画效果,例如WiFi网络信号的强弱表示或者语音聊天声音的强弱表示,分为增强和减弱两种逐帧动画效果。
首先是放置图片素材,如图3所示。将其根据屏幕分辨率大小分别放一套图片到不同屏幕分辨率的drawable文件夹下,android系统会根据机器的屏幕分辨率到相应屏幕分辨率的drawable文件夹里面去找相应的图片素材,以兼容不同屏幕分辨率的安卓机器屏幕。
图3、iv1到iv4
其次是信号增强即图片顺序播放的效果,在drawable下新建animation_list_sequence.xml样式文件。
<?xml version="1.0" encoding="utf-8"?><!--
根标签为animation-list;
其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画;
其中visible规定drawable的初始可见性,默认为flase;
其中variablePadding若为true则允许drawable的距离在当前选择状态下有所改变(If true, allows the drawable’s padding to change based on the current state that is selected.),默认为false;
根标签下,通过item标签对动画中的每一个图片进行声明;
android:duration 表示展示所用的该图片的时间长度,单位为毫秒;
--><animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
android:visible="false"
android:variablePadding="false"
>
<item android:drawable="@drawable/iv1" android:duration="200"></item>
<item android:drawable="@drawable/iv2" android:duration="200"></item>
<item android:drawable="@drawable/iv3" android:duration="200"></item>
<item android:drawable="@drawable/iv4" android:duration="200"></item></animation-list>1234567891011121314151617181920
再者是信号增强即图片顺序播放的效果,在drawable下新建animation_list_reverse.xml样式文件。
<?xml version="1.0" encoding="utf-8"?><!--
根标签为animation-list;
其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画;
其中visible规定drawable的初始可见性,默认为flase;
其中variablePadding若为true则允许drawable的距离在当前选择状态下有所改变(If true, allows the drawable’s padding to change based on the current state that is selected.),默认为false;
根标签下,通过item标签对动画中的每一个图片进行声明;
android:duration 表示展示所用的该图片的时间长度,单位为毫秒;
--><animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true"
android:visible="false"
android:variablePadding="false"
>
<item android:drawable="@drawable/iv4" android:duration="200"></item>
<item android:drawable="@drawable/iv3" android:duration="200"></item>
<item android:drawable="@drawable/iv2" android:duration="200"></item>
<item android:drawable="@drawable/iv1" android:duration="200"></item></animation-list>1234567891011121314151617181920
然后在layout文件夹下新建xml布局文件activity_animation_list.xml,引用上面写好的drawable文件夹下的xml样式文件。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView android:id="@+id/iv_animation_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/animation_list_sequence" />
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="sequence"
android:text="顺序显示" />
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="stop"
android:text="停止动画" />
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="reverse"
android:text="倒序显示" /></LinearLayout>12345678910111213141516171819202122232425262728293031
然后在src包下新建Activity的Java文件AnimationListActivity.java,用于演示 *** 作。
package com.zcz.drawablexmltestimport android.app.Activityimport android.graphics.drawable.AnimationDrawableimport android.os.Bundleimport android.view.Viewimport android.view.Windowimport android.widget.ImageViewpublic class AnimationListActivity extends Activity{
private ImageView mIv
private AnimationDrawable mAd
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.activity_animation_list)
mIv = (ImageView) findViewById(R.id.iv_animation_list)
}
public void sequence(View view){
mIv.setImageResource(R.drawable.animation_list_sequence)
mAd = (AnimationDrawable) mIv.getDrawable()
mAd.start()
} public void stop(View view){
mAd = (AnimationDrawable) mIv.getDrawable()
mAd.stop()
} public void reverse(View view){
mIv.setImageResource(R.drawable.animation_list_reverse)
mAd = (AnimationDrawable) mIv.getDrawable()
mAd.start()
}
}
application标签中的@style/AppTheme引用自哪个文件夹中的styles.xml,这是根据运行此程序的手机系统来决定的,如果手机系统的API版本是11以上就是v11/styles.xml,API版本是14以上就是v14/styles.xml,以此类推。我们可以通过修改AppBaseTheme的父主题来实现我们需要的样式,此文章主要就是来讨论这个主题如何修改。
使用android系统中自带的主题要加上"android:",如:android:Theme.Black
使用v7兼容包中的主题不需要前缀,如:Theme.AppCompat
系统自带主题:
API 1:
android:Theme 根主题
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面墙纸为背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板风格
android:Theme.Dialog 对话框风格
API 11:
android:Theme.Holo Holo根主题
android:Theme.Holo.Black Holo黑主题
android:Theme.Holo.Light Holo白主题
API 14:
android:Theme.DeviceDefault 设备默认根主题
android:Theme.DeviceDefault.Black 设备默认黑主题
android:Theme.DeviceDefault.Light 设备默认白主题
API 21: (网上常说的 Android Material Design 就是要用这种主题)
android:Theme.Material Material根主题
android: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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)