实验四: Android 资源访问

编程入门 行业动态 更新时间:2024-10-20 05:22:42

实验四: Android <a href=https://www.elefans.com/category/jswz/34/1770980.html style=资源访问"/>

实验四: Android 资源访问

实验四: Android 资源访问

4.1 实验目的

本次实验的目的是让大家熟悉 Android 中的资源,资源指的是代码中使用 的外部文件,这些文件作为应用程序的一部分,被编译到应用程序中。

4.2 实验要求

  • 掌握字符串资源,颜色资源和尺寸资源文件的定义和使用

  • 掌握如何通过菜单资源定义上下文菜单和选项菜单

4.3实验内容

【练习 4.1】为 ImageView 更换图片

实现本程序前需要准备两张图片, 分别存放在”/res/drawable/”文件夹与手机 文件系统的另 一个文件夹中。在本程序中两张图片文件的路径分别为 /res/drawable/img01.jpg 与/data/data/com.example.resource1/img02.jpg。程序中 会先将 drawable 目录里的图片文件显示在 ImageView 中,再设计一个 Button , 当用户单击 Button 后,将 ImageView 里的图片换成另一张存在手机文件系统里 的图形文件。好的,以下是实现该功能的详细步骤:

步骤一:准备两张图片

首先,确保你有两张要使用的图片,一张放在/res/drawable/目录下,命名为img01.jpg,另一张放在手机文件系统的另一个文件夹中,路径为/data/data/img/img02.jpg

步骤二:在布局文件中添加 TextView、ImageView 和 Button
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:padding="@dimen/activity_horizontal_margin"tools:context=".MainActivity"><TextViewandroid:id="@+id/mTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/str_text" /><ImageViewandroid:id="@+id/mImageView"android:layout_width="500dp"android:layout_height="356dp"android:layout_below="@id/mTextView"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"android:src="@drawable/img01" /><Buttonandroid:id="@+id/mButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/mImageView"android:layout_centerHorizontal="true"android:layout_marginTop="16dp"android:text="@string/str_button"android:textSize="18sp" /></RelativeLayout>
步骤三:在 MainActivity.java 中设置点击事件

打开MainActivity.java文件,并在其中添加以下代码:

package com.example.imageswitcherapp;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;import java.io.File;public class MainActivity extends Activity {private ImageView mImageView;private Button mButton;private TextView mTextView;private String fileName = "/data/data/img/img02.jpg";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mButton = (Button) findViewById(R.id.mButton);mButton.setOnClickListener(new Button.OnClickListener() {public void onClick(View v) {mImageView = (ImageView) findViewById(R.id.mImageView);mTextView = (TextView) findViewById(R.id.mTextView);File f = new File(fileName);if (f.exists()) {Bitmap bm = BitmapFactory.decodeFile(fileName);mImageView.setImageBitmap(bm);mTextView.setText(fileName);} else {mTextView.setText("文件不存在");}}});}
}
步骤四:处理文件系统权限

要访问/data/data/com.example.resource1/img02.jpg,你可能需要相应的文件系统权限。请确保你的应用程序在 AndroidManifest.xml 文件中具有相应的权限声明。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
步骤五:在 AndroidManifest.xml 中声明 Activity

确保在AndroidManifest.xml文件中声明了你的Activity,类似于以下代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""package="com.example.imageswitcherapp"><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 将权限声明放在这里 --><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.ImageSwitcherApp"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
步骤六:运行应用程序

现在可以构建并运行你的应用程序。当点击按钮时,ImageView 将会切换显示两张不同的图片。

【练习 4.2】运用上下文菜单

编写 Android 项目,实现带子菜单的上下文菜单。

步骤一:创建项目
  1. 在 Android Studio 中创建一个新的 Android 项目,并命名为 MenuApp
步骤二:准备资源文件
  1. res 目录下创建一个 menu 目录。
  2. menu 目录中创建一个名为 contextmenu.xml 的菜单资源文件。

contextmenu.xml 文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="" ><itemandroid:id="@+id/color1"android:title="红色"></item><itemandroid:id="@+id/color2"android:title="绿色"></item><itemandroid:id="@+id/color3"android:title="蓝色"></item><itemandroid:id="@+id/color4"android:title="橙色"></item><itemandroid:id="@+id/color5"android:title="恢复默认"></item><itemandroid:id="@+id/item2"android:alphabeticShortcut="e"android:title="其他颜色"><menu><groupandroid:id="@+id/other" ><itemandroid:id="@+id/other1"android:title="橄榄色"></item><itemandroid:id="@+id/other2"android:title="水绿色"></item></group></menu></item>
</menu>
步骤三:创建布局文件
  1. 打开 activity_main.xml 文件,将以下代码添加到布局文件中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="5px"android:orientation="vertical" ><TextViewandroid:id="@+id/show"android:textSize="60px"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="打开菜单..." />
</LinearLayout>
步骤四:编写 Java 代码
  1. 打开 MainActivity.java 文件,将以下代码添加到文件中:
package com.example.menu;import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;public class MainActivity extends Activity {private TextView tv;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.show);registerForContextMenu(tv);}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {MenuInflater inflator = new MenuInflater(this);inflator.inflate(R.menu.contextmenu, menu);menu.setHeaderIcon(R.drawable.ic_launcher);menu.setHeaderTitle("请选择文字颜色: ");}@Overridepublic boolean onContextItemSelected(MenuItem item) {if (item.getGroupId() == R.id.other) {if (item.getItemId() == R.id.other1) {tv.setTextColor(Color.rgb(118, 146, 60));} else if (item.getItemId() == R.id.other2) {tv.setTextColor(Color.rgb(0, 255, 255));}} else {switch (item.getItemId()) {case R.id.color1:tv.setTextColor(Color.rgb(255, 0, 0));break;case R.id.color2:tv.setTextColor(Color.rgb(0, 255, 0));break;case R.id.color3:tv.setTextColor(Color.rgb(0, 0, 255));break;case R.id.color4:tv.setTextColor(Color.rgb(255, 180, 0));break;default:tv.setTextColor(Color.rgb(255, 255, 255));}}return true;}
}
步骤五:运行应用程序

4.4 扩展练习

  1. 编写 Android 程序,实现带子菜单的选项菜单

步骤一:创建一个新的 Android 项目

  1. 在 Android Studio 中创建一个新的 Android 项目,命名为 OptionsMenuApp

步骤二:准备资源文件

  1. res/menu 目录下创建一个名为 options_menu.xml 的菜单资源文件。

options_menu.xml 文件内容如下:

<menu xmlns:android=""><itemandroid:id="@+id/file_menu"android:title="文件"><menu><itemandroid:id="@+id/open_file"android:title="打开文件" /><itemandroid:id="@+id/save_file"android:title="保存文件" /></menu></item><itemandroid:id="@+id/edit_menu"android:title="编辑"><menu><itemandroid:id="@+id/copy"android:title="复制" /><itemandroid:id="@+id/paste"android:title="粘贴" /></menu></item>
</menu>

步骤三:在 MainActivity.java 中实现选项菜单

  1. 打开 MainActivity.java 文件。

  2. onCreate 方法之后,添加以下代码来重写创建选项菜单的方法:

package com.example.optionsmenuapp;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.options_menu, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.open_file:openFile();return true;case R.id.save_file:saveFile();return true;case R.id.copy:copyText();return true;case R.id.paste:pasteText();return true;default:return super.onOptionsItemSelected(item);}}private void openFile() {// 处理打开文件的逻辑Toast.makeText(this, "打开文件", Toast.LENGTH_SHORT).show();}private void saveFile() {// 处理保存文件的逻辑Toast.makeText(this, "保存文件", Toast.LENGTH_SHORT).show();}private void copyText() {// 处理复制文本的逻辑Toast.makeText(this, "复制文本", Toast.LENGTH_SHORT).show();}private void pasteText() {// 处理粘贴文本的逻辑Toast.makeText(this, "粘贴文本", Toast.LENGTH_SHORT).show();}
}

步骤四:在布局文件中添加一个 TextView

  1. 打开 activity_main.xml 文件,并在布局中添加一个 TextView
<TextViewandroid:id="@+id/text_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello, Options Menu!"android:layout_gravity="center"android:textSize="24sp"/>

步骤五:运行应用程序

更多推荐

实验四: Android 资源访问

本文发布于:2023-11-17 11:41:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643185.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:资源   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!