android中r.drawable机制是什么意思,Android,引用R.drawable中的东西.使用变量?
时间: 2024-03-17 14:40:31 浏览: 272
在 Android 中,R.drawable机制是一个资源标识符,它代表着应用程序中的可绘制资源。当我们在 res/drawable 目录下添加图片资源时,系统会自动为每一个资源分配一个唯一的整型值作为标识符,这个值会被存储在 R.java 文件中。
我们可以通过 R.drawable.资源名 的方式来引用应用程序中的图片、图标、背景等可绘制资源。例如,如果我们在 res/drawable 目录下添加了一个名为 my_image.png 的图片资源,那么我们可以通过 R.drawable.my_image 来引用这个资源。
当我们需要在代码中引用 R.drawable 中的资源时,通常会使用一个变量来存储这个资源的标识符,例如:
```
int resId = R.drawable.my_image;
```
然后,我们可以通过这个变量来访问这个资源:
```
imageView.setImageResource(resId);
```
这样做的好处是,我们可以在运行时动态地改变资源的引用,而不需要修改代码。
相关问题
package com.mingrisoft; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; public class RabbitView extends View { public float bitmapX; // 兔子显示位置的X坐标 public float bitmapY; // 兔子显示位置的Y坐标 public RabbitView(Context context) { // 重写构造方法 super(context); bitmapX = 750; // 设置兔子的默认显示位置的X坐标 bitmapY = 500; // 设置兔子的默认显示位置的Y坐标 } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint paint = new Paint(); // 创建并实例化Paint的对象 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.rabbit); // 根据图片生成位图对象 canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint); // 绘制小兔子 if (bitmap.isRecycled()) { // 判断图片是否回收 bitmap.recycle(); // 强制回收图片 } } }详细解释这段代码的作用
这段代码定义了一个名为 RabbitView 的自定义 View 类,用于显示一个小兔子的图片。它有两个成员变量 bitmapX 和 bitmapY,表示小兔子的显示位置的 X 和 Y 坐标。在构造方法中,初始化了这两个变量的默认值,即 X 坐标为 750,Y 坐标为 500。
在 onDraw 方法中,首先创建了一个 Paint 对象,用于绘制小兔子。然后通过 BitmapFactory 的 decodeResource 方法,根据 R.drawable.rabbit 图片资源生成了一个 Bitmap 对象。最后通过 canvas 的 drawBitmap 方法,将小兔子绘制在指定的位置上。
代码还包括了一个回收图片的操作,即判断图片是否被回收,如果没有则强制回收,以释放内存空间。
package com.mingrisoft; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.FrameLayout; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); FrameLayout frameLayout = (FrameLayout) findViewById(R.id.mylayout); // 获取帧布局管理器 final RabbitView rabbit = new RabbitView(MainActivity.this); // 创建并实例化RabbitView类 // 为小兔子添加触摸事件监听 rabbit.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { rabbit.bitmapX = event.getX(); // 设置小兔子显示位置的X坐标 rabbit.bitmapY = event.getY(); // 设置小兔子显示位置的Y坐标 rabbit.invalidate(); // 重绘rabbit组件 return true; } }); frameLayout.addView(rabbit); // 将rabbit添加到布局管理器中 } }详细解释下这段代码的作用
这段代码实现了一个简单的 Android 应用程序,用于在屏幕上显示一个小兔子,并且允许用户通过触摸屏幕移动小兔子的位置。下面是代码的详细解释:
1. 导入需要使用的类和包:
```java
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
```
2. 定义 MainActivity 类,该类继承自 Activity 类:
```java
public class MainActivity extends Activity {
```
3. 实现 onCreate() 方法,在该方法中初始化应用程序:
```java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.mylayout);
RabbitView rabbit = new RabbitView(MainActivity.this);
rabbit.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
rabbit.bitmapX = event.getX();
rabbit.bitmapY = event.getY();
rabbit.invalidate();
return true;
}
});
frameLayout.addView(rabbit);
}
```
在该方法中,我们完成了以下操作:
- 使用 setContentView() 方法设置布局文件;
- 获取帧布局管理器并实例化一个 RabbitView 对象;
- 为 RabbitView 添加触摸事件监听器;
- 将 RabbitView 添加到布局管理器中。
4. 实现 RabbitView 类,该类继承自 View 类:
```java
public class RabbitView extends View {
```
5. 在 RabbitView 类中定义了一个 bitmapX 和 bitmapY 变量,它们分别表示小兔子在屏幕上的 X 和 Y 坐标:
```java
public float bitmapX;
public float bitmapY;
```
6. 在 RabbitView 类中实现了一个 draw() 方法,该方法用于在屏幕上绘制小兔子:
```java
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rabbit);
canvas.drawBitmap(bitmap, bitmapX, bitmapY, null);
bitmap.recycle();
}
```
在该方法中,我们首先从资源文件中加载小兔子的图片,然后使用 drawBitmap() 方法在屏幕上绘制小兔子。
7. 最后,在 RabbitView 类中实现了一个构造方法,用于初始化小兔子的位置和大小:
```java
public RabbitView(Context context) {
super(context);
bitmapX = 0;
bitmapY = 0;
}
```
在该构造方法中,我们将小兔子的 X 和 Y 坐标初始化为 0。
综上所述,这段代码的作用是实现一个简单的 Android 应用程序,用于在屏幕上显示一个小兔子,并且允许用户通过触摸屏幕移动小兔子的位置。
阅读全文