安卓开发学习9-资源
一 字符串资源
二 颜色资源
颜色值组成
表达式组成
透明度可选,其他使用十六进制表示
颜色资源与使用
1、通过color标签自定义颜色的名称和值
2、xml文件中使用
3、Java文件中使用:设置颜色,如下代码是在Java文件中通过getResources().getColor方法获取到R.color.black所对应颜色值
三 尺寸资源
常用尺寸单位
- dp
- sp
dp
设备独立像素,会根据屏幕的大小进行改变。主要用于设置边距和组件大小的。
sp
可伸缩像素,安卓中推荐的、设置文字大小的单位。他会根据用户字体大小的首选项进行设置文字的大小。例如设置手机的字体是超大。那么同一个程序,在一个屏幕设置文字大小是正常,而另一个设置手机字体是超大的,字体大小是不同的。
尺寸资源文件
使用
1、xml文件内使用
2、Java文件内使用
四 布局资源
布局资源文件
指定Activity使用的布局资源文件
setContentView(R.layout.activity_main);
布局资源使用
1、xml中使用其他布局文件,也就是嵌套布局。通过include标签指定嵌套
<include layout="@layout/activity_detail"></include>
五 StateListDrawable资源
解析
定义在xml文件中的drawable对象,能根据不同状态呈现不同的效果。例如实现一个动画:点击一个按钮,按钮变大后再变回原样或者输入框在没有聚焦的时候是橙色的,而设置聚焦后字体颜色是绿色的
drawable资源文件创建
六 数组资源
资源文件创建
三种不同类型的数组
1、尺寸数组
2、整型数组:可以是十进制也就可以是十六进制
3、字符串数组
七 Drawable资源
Drawable资源文件
常用两类drawable资源
9 Patch图片制作
9 Patch图片是可伸缩的标准png图像,通过自定义拉伸区间可以让图片避免失真的情况
9 patcht图片后缀
新版的Android SDK中tools里边没有画9 patch图片工具,但是在Android Studio更为方便
右键想要生成9 patch图片的原始png图片
drawable和mipmap的区别
主要区别在于存储的文件类型
八 主题资源
默认主题
自定义主题资源
在res/values/themes.xml文件中进行定义
使用style标签包含主题资源,并通过item定义每一部分的资源,一般资源文件定义整个App的资源,item上name是设置配置的属性,就是配置的部分
style的name:主题资源名称
parent:继承父主题
item的name:表示配置属性。windowNoTitle表示无标题,而设置为false,就表示为窗体有标题
<style name="bgTheme" parent="@style/Theme.MingriApplication"> <item name="windowNoTitle">false</item> <item name="android:windowBackground">@color/black</item> </style>
资源使用
配置App的主题资源,需要在AndroidManifest.xml文件中
1、xml文件中
2、Java文件中
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.bgTheme);
setContentView(R.layout.activity_main);
}
}
九 样式资源
应用场景
统一样式设置
自定义样式与使用
自定义样式
<style name="title"> <item name="android:textSize">30sp</item> <item name="android:textColor">#06F</item> </style>
使用
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="乔布斯" style="@style/title"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="活着就是为了改变世界,难道还有其他原因吗?" style="@style/context"/>
样式继承
<style name="context" parent="title"> <item name="android:textSize">18sp</item> </style>
主题和样式的区别
十 菜单资源
常见菜单
菜单资源文件
菜单资源文件目录
目录需要手动在res目录下创建
创建菜单资源文件
配置资源文件
选项菜单
配置与监控菜单项目
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //第3步:重写onCreateOptionMenu()方法,添加一个选项菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { //实例化MenuInflater对象 MenuInflater menuInflater=new MenuInflater(this); //解析菜单资源 menuInflater.inflate(R.menu.menu_test,menu); return super.onCreateOptionsMenu(menu); } //重写onOptionsItemSelected()方法,指定各个菜单项被选择时,所应做的处理 @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.settings: Intent intent_settings=new Intent(MainActivity.this,Settings.class); startActivity(intent_settings); break; case R.id.regard: Intent intent_regard=new Intent(MainActivity.this,Regard.class); startActivity(intent_regard); break; } return super.onOptionsItemSelected(item); } }
上下文菜单
创建上下文菜单
1、menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/coll" android:title="收藏"></item> <item android:id="@+id/upp" android:title="举报"></item> <item android:id="@+id/none" android:title="不显示"></item> </menu>
2、MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView imageView = findViewById(R.id.img); imageView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { // 注册 registerForContextMenu(view); // 打开 openContextMenu(view); // 消化点击事件,也就是事件传递到这里就结束了,不会触发后续的其他行为 return true; } }); } // 创建上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { MenuInflater menuInflater = new MenuInflater(MainActivity.this); menuInflater.inflate(R.menu.menu, menu); super.onCreateContextMenu(menu, v, menuInfo); // menu.add(1,1,1,"收藏"); Java代码动态添加 (组id , 本身id , 排序id, 显示文字) // menu.add(2,2,2,"举报"); } // 监听上下文菜单点击事件 @Override public boolean onContextItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.coll: Toast.makeText(MainActivity.this, "选中了收藏", Toast.LENGTH_SHORT).show(); break; case R.id.upp: Toast.makeText(MainActivity.this, "选中了举报", Toast.LENGTH_SHORT).show(); break; case R.id.none: Toast.makeText(MainActivity.this, "选中了不显示", Toast.LENGTH_SHORT).show(); break; } return super.onContextItemSelected(item); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理