2

公然的 n00b 问题:我有几个图片目录,希望只显示一个随机图片,我通过一组单选按钮选择。使用时如何指定目录:

//"ha" is ha.png, which I would like to be at drawable/1/ha.png
image.setImageResource(R.drawable.ha);

我可以用setImageResource这个吗?如果有怎么办?如果没有,我应该使用什么以及如何使用?

练习的对象是一个抽认卡程序,在第一个活动中可选择不同的课程(因此划分图像)。

4

2 回答 2

3

如果您指的是 apk 中的 drawables 文件夹,则不能在 res/drawable 下有子文件夹。

如果您指的是 sdcard 上的随机文件夹,则可以使用子文件夹,但您不能使用 R.drawable.* 来引用图像。

在这种情况下,您需要使用加载图像

Bitmap bmp = BitmapFactory.decodeFile("/sdcard/drawable/1/ha.png");

它返回一个位图,您可以像这样使用它

image.setImageBitmap(bmp)

http://developer.android.com/reference/android/widget/ImageView.html#setImageBitmap(android.graphics.Bitmap)

为了对对单选按钮所做的更改做出反应,请参阅 如何在 android 中的单选按钮上设置 On click listener

于 2012-08-05T07:25:04.713 回答
1

您可以使用 GridView 显示从单选按钮选择的目录中的图像(如您的要求所述)。创建 GridView 后,将适配器关联到它。请参阅下面的示例适配器:

public class ImageAdapter extends BaseAdapter {

    /** LayoutInflater. */
    private LayoutInflater mInflater;

    /** The i. */
    private ImageView i;

    /**
     * Instantiates a new image adapter.
     * 
     * @param c
     *            the c
     */
    public ImageAdapter(Context c) {
        mInflater = LayoutInflater.from(c);
    }

    public int getCount() {
                    // scaled pictures will have the list of
                    // which you have from the directory
        return scaledPictures.size();
    }

    public Bitmap getItem(int position) {
        return scaledPictures.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {
        convertView = mInflater.inflate(R.layout.image, parent, false);
        } else {
            i = (ImageView) convertView;
        }

        Bitmap bitmap = getItem(position);
        i = (ImageView) convertView.findViewById(R.id.galleryimage);
        i.setImageBitmap(bitmap);
        bitmap = null;

        return i;
    }
}
于 2012-08-05T07:28:27.230 回答