字符串资源
-
定义字符串资源文件 <string
-
使用字符串资源
在xml中使用
android:text="@string/earn"
在java中使用
TextView textView = this.findViewById(R.id.textview);
textView.setText(getResources().getString(R.string.earn));
颜色资源
#透明度RGB
- 定义颜色资源文件<color
- 使用颜色资源
xml
android:textColor="@color/black"
java
textView.setTextColor(getResources().getColor(R.color.black));
尺寸资源
dp:设备独立像素,设置边距,组件大小
sp:字体大小
- 定义尺寸资源文件<dimen
android:textSize="@dimen/title"
- 使用尺寸资源
textView.setTextSize(getResources().getDimension(R.dimen.title));
布局资源
在一个布局资源文件中引用另一个布局资源文件
<include layout="@layout/image"></include>
数组资源
定义数据资源文件
<array:定义尺寸资源
<integer-array:定义整形数组
<string-array:定义字符串数组
使用数组资源
xml
android:entries="@array/zzz"
java
String[] arr = getResources().getStringArray(R.array.zzz);
图像资源
- Drable资源
drawable-hdpi
drawable-mdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
图片资源
绘制.9.png图片
StateListDrawable资源
用来设置组件状态的,如设置编辑框选中和未选中的颜色,或设置按钮可用和不可用状态
实现当为输入密码时登录按钮为不可用
定义一个StateListDrawable资源放进drawable文件中
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:drawable="@drawable/bg_textview"></item>
<item android:state_enabled="false" android:drawable="@drawable/bg_textview2"></item>
</selector>
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请填写密码"
android:textColor="@drawable/edittext_focus"/>
<Button
android:id="@+id/btn"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/login"
android:enabled="false"
android:background="@drawable/bg_textview"
android:textColor="@color/black"/>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = this.findViewById(R.id.editText);
final Button button = this.findViewById(R.id.btn);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (editText.length()>0){
button.setEnabled(true);
}else {
button.setEnabled(false);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
mipmap资源
mipmap 存放应用程序启动图标
drawable 存放图像文件、9Patch、Shape、StateListDrawable
主题和样式资源
主题资源
在values包下创建styles资源文件,使用<style
parent="":继承父主题
标签定义主题
在Androidmanifest使用主题android:theme
在java代码中使用
setTheme(R.style.xxx);
setContentView(R.layout.activity_main);
该方法要在setContentView()方法前执行
样式资源
也是在styles中使用<style标签定义
在组件中使用
style="@style/name"
使用该样式资源
菜单资源
定义菜单资源文件
在res包下创建menu包再创建menu.xml文件
使用<menu标签定义菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="message" android:title="消息"></item>
<item android:id="m" android:title="消息"></item>
<item android:id="s" android:title="消息"></item>
<item android:id="aa" android:title="消息"></item>
</menu>
定义菜单。
在java代码中重写onCreateOptionsMenu()方法
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
重写onOptionsItemSelected()方法实现当选中指定菜单时的事件,如Activity跳转
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.ssm:
// Intent intent =new Intent(MainActivity.this,);
// startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
创建上下文菜单
长按显示菜单
为组件注册上下文菜单
添加上下文菜单
指定菜单项被选择时所应做出的处理
定义菜单资源
在java代码中使用registerForContextMenu()方法为组件注册上下文菜单
重写onCreateContextMenu()方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.menu, menu);
}
重写onContextItemSelected()方法对被选中的菜单进行处理
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
return super.onContextItemSelected(item);
}