什么是资源
字符串资源
定义
这是一个座右铭
在xml文件中使用
略
在java文件中使用字符串资源文件(动态设置)
TextView motto = findViewById(R.id.motto);
motto.setText(getResources().getString(R.string.motto));
颜色资源
略
尺寸资源
dp:设备独立像素(不同设备显示效果不一样)
视频:可伸缩像素(推荐使用设置文字大小)
可以自定义
布局资源
略
数组资源
需要自定义数组资源文件
例:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="listitem">
<item>第一个字符串</item>
<item>第一个字符串</item>
<item>第一个字符串</item>
</string-array>
</resources>
java文件中使用:String[] arr = getResources().getStringArray(R.array.listitem)
Drawable资源
一般分为两类:
1.图片资源
2.StateListDrawable资源(状态列表资源)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color = "#f60"/>
<item android:state_focused="false" android:color = "#0a0"/>
</selector>
使用状态列表资源
<EditText
android:textColor="@drawable/edittextfocused"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
mipmap资源
主题资源
使用
1.在AndroidMainfest文件中使用
2.在java文件中使用主题样式
注意:
样式资源
也定义在style.xml文件中
style.xml中主题资源与样式资源的区别:
主题:设置整个APP或窗口样式。
样式:设置组件的样式。
<style name="title" >
<item name="android:textSize">30sp</item>
<item name="android:textColor">#06F</item>
</style>
<TextView
android:id="@+id/t1"
style="@style/title"
android:text="使用样式资源设置文字"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
菜单资源文件
创建菜单资源
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/message1" android:title="菜单项1" ></item>
<item android:id="@+id/message2" android:title="菜单项2" ></item>
<item android:id="@+id/message3" android:title="菜单项3" ></item>
<item android:id="@+id/message4" android:title="菜单项4" ></item>
</menu>
效果如下图:
实例:选项菜单
MainActivity代码:
package com.example.practice2;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//重写onCreateOptionsMenu方法来添加一个选项菜单
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = new MenuInflater(this);
//解析菜单资源文件
menuInflater.inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
//对各个菜单项进行处理:重写onOptionsItemSelected方法
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.Settings:
Intent intent = new Intent(MainActivity.this,Settings.class);
startActivity(intent);
break;
case R.id.Regard:
Intent intent1 = new Intent(MainActivity.this,Regard.class);
startActivity(intent1);
break;
}
return super.onOptionsItemSelected(item);
}
}
实例:创建上下文菜单
package com.example.practice2;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView introduce;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//为文本框注册上下文菜单
introduce = findViewById(R.id.introduce);
registerForContextMenu(introduce);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.menu,menu);
}
//重写方法,指定各个菜单项被选则时,所应该做的处理
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.menu_copy:
Toast.makeText(MainActivity.this,"已复制",Toast.LENGTH_SHORT).show();
break;
case R.id.menu_collect:
Toast.makeText(MainActivity.this,"已收藏",Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}