Android 应用的资源
- 布局
- 颜色
- 数据
- 图片
- 尺寸
- 主题样式
- 菜单
- 国际化
- …
字符串资源
- 定义字符串资源文件
- 使用资源文件
module/res/values/strings.xml
<resources>
<string name="xxx">xxxxx<string>
</resources>
使用时
xml中 @string/name
java中 getResources().getString(R.string.name)
颜色资源
透明度 + RGB --> #透明度RGB
- 定义颜色资源
- 使用颜色资源
res/values/colors.xml
<resources>
<color name="xxx">#xxxx</color>
</resources>
使用时
xml中 @color/name
java中 getResources().getColor(R.color.name)
尺寸资源
dp sp
dp 设备独立像素,会根据屏幕大小自动调整
sp 可伸缩像素,会适配手机字体大小缩放
- 定义尺寸资源文件
- 使用尺寸资源文件
res/values/dimens.xml
<resources>
<dimen name="xxx">xxxdp</dimen>
<dimen name="xxx">xxxsp</dimen>
</resources>
xml中使用 @dimen/name
java中getResources().getDimension(R.dimen.name)
布局资源
res/layout/xxx.xml
使用
xml中使用 <include layout="@layout/xxx"></include>
java中使用 R.layout.xxxxx
数组资源
- 创建
- 使用
res/values/arrays.xml
<array>
<item></item>
</array>
<integer-array>
<item></item>
</integer-array>
<string-array>
<item></item>
</string-array>
xml中使用 用于entries属性="@array/name"
javaz中使用getResources().getStringArray(R.array.name)
Deawable 资源
- 图片
- xml
res/drawable-hdpi/mdip/xhdpi/xxhdpi/xxxhdip
图片资源 png jip gif .9.png
.9.png
StateListDrawable资源
根据状态改变图片的显示方式 选中未选中 按下和抬起
res/drawable/xxx.xml
<selector>
<item android:state_focused="true" android:color="#f60"/>
<item android:state_focused="false" android:color="#0a0"/>
</selector>
xml使用@drawable/xxx
编辑框添加change事件监听器
editText.addTextChangedListener(new TextWatcher(){
@Override
public void beforeTextChanged(ChrSequence s,int start,int count,int after){
}
@Override
public void onTextChanged(CharSquence s,int start ,int before, int count){
}
})
mpmap资源
通常保存app的启动图片
在xml中 @mipmap/name直接使用
在java中 直接R.mipmap.name使用
mipmap和drawable的区别?
mipmap 仅仅用于app的启动图标
drawable是app运行中使用的图片资源
主题资源
设置窗口的整体样式
布局设置 appTheme按钮 可以设置 系统自带的主题
自定义主题?
- 定义主题资源文件
- 使用主题资源文件
res/values/styles.xml
<resources>
<style name="ThemeName" parent="@style.AppTheme">
<item name="android.windowNoTitle">false</item>
<item name="android.windowBackground">@drawable/name</item>
</style>
</resources>
使用主题
- 在配置文件中配置
- 在Java文件中加载
配置文件:为整个app设置全局主题 那么在 application 标签上设置 如果只是某个窗口 那么就在 activity标签上配置主题 android:theme="@style/name"
java中使用,要在 setContentView之前使用
setTheme(R.style.name)
样式资源
res/values/styles.xml
<resources>
<style name="styleName">
<item name="android:textSize">30sp</item>
<item name="android:textColor">#06F</item>
</style>
<style name="styleName2" parent="@style/styleName" >
<item name="android:textSize">20sp</item>
</style>
</resources>
一般在xml中使用:
style="@style/stylename"
菜单资源
菜单资源文件 — 定义菜单项
res/menu/menu_name.xml
<menu>
<item android:id="@+id/m1" android:title="菜单一"></menu>
<item android:id="@+id/m2" android:title="菜单二"></menu>
...
</menu>
选项菜单
在Java中
// 重写Activity中的方法创建选项菜单
@Override
public boolean onCreateOptionsMenu(Menu menu){
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.name,nemu);
retrun menuInflater;
}
// 对各个菜单项进行处理
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.m1:
doSomeThing...
break;
case R.id.m2:
doSomeThing...
break;
}
retrun super.onOptionsItemSelected(item);
}
上下文菜单
- 为组件注册上下文菜单
- 添加上下文菜单
- 指定菜单项被选择时所应做的处理
// 为xxxView组件注册上下文菜单
registerForContextMenu(xxxView);
// 重写创建上下文菜单的方法
@Override
public viod onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo){
// 加载菜单资源
MenuInflater menuinflater = new MenuInflater(this);
menuinflater.inflate(R.menu.name,menu);
}
// 重写上下文菜单被选中的事件
@Override
public boolean onContextItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.m1:
doSomeThing..
break;
case R.id.m2:
doSomeThing..
break;
}
return true;
}