0

我是 Android 的初学者,我想开发一个活动,让用户看到他的手机图库的两个随机图像,他必须选择哪个是旧的。

所以我有这段代码,我在教程中找到并使用了它。它有效,它显示了 SD 卡中的每个图像。

但现在是我的问题:

我如何在我的 gridview 中只获得 2 张随机图片?

我希望你能帮助我,我不太明白这个光标的东西。

public class MainActivity extends Activity {

/**
 * Cursor used to access the results from querying for images on the SD
 * card.
 */
private Cursor cursor;
/*
 * Column index for the Thumbnails Image IDs.
 */
private int columnIndex;

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Set up an array of the Thumbnail Image ID column we want
    String[] projection = { MediaStore.Images.Thumbnails._ID };
    // Create the cursor pointing to the SDCard
    cursor = managedQuery(
            MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, // Which
                                                                            // columns
                                                                            // to
                                                                            // return
            null, // Return all rows
            null, MediaStore.Images.Thumbnails.IMAGE_ID);
    // Get the column index of the Thumbnails Image ID
    columnIndex = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);

    GridView sdcardImages = (GridView) findViewById(R.id.sdcard);
    sdcardImages.setAdapter(new ImageAdapter(this));


}

/**
 * Adapter for our image files.
 */
private class ImageAdapter extends BaseAdapter {

    private Context context;

    public ImageAdapter(Context localContext) {
        context = localContext;
    }

    public int getCount() {
        return cursor.getCount();
    }

    public Object getItem(int position) {
        return position;
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView picturesView;
        if (convertView == null) {
            picturesView = new ImageView(context);
            // Move cursor to current position
            cursor.moveToPosition(position);
            // Get the current value for the requested column
            int imageID = cursor.getInt(columnIndex);
            // Set the content of the image based on the provided URI
            picturesView.setImageURI(Uri.withAppendedPath(
                    MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""
                            + imageID));
            picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            picturesView.setPadding(8, 8, 8, 8);
            picturesView
                    .setLayoutParams(new GridView.LayoutParams(300, 300));
        } else {
            picturesView = (ImageView) convertView;
        }
        return picturesView;
    }
}

}

4

1 回答 1

0

使用 StartActivity 作为结果 这不会给你两个图像。它允许用户查看他们的图像文件夹并允许他们选择。我也是 Android 的新手,但这应该对你有所帮助。这对我来说很好

在 MAIN 中摆脱所有这些并使用

private String selectedImagePath;
private static final int SELECT_PICTURE = 1;    

im1= (ImageView)findViewById(R.id.im1);

final Bundle bundle=this.getIntent().getExtras();
final int pic=bundle.getInt("image");
im1.setImageResource(pic);

somebutton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}});

创建这个新课程

public class GetImageActivity1 extends Activity {

private static final int SELECT_PICTURE = 1;

private String selectedImagePath;
private ImageView img;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);

    img = (ImageView)findViewById(R.id.showImg);

    ((Button) findViewById(R.id.Button01))
            .setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                    Intent intent = new Intent();
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
                }
            });

    Button send = (Button) findViewById(R.id.send);
    send.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {


            Intent intent=new Intent();
            setResult(RESULT_OK, intent);
            Bundle bundle=new Bundle();
            bundle.putInt("image",R.id.showImg);
            intent.putExtras(bundle);
            finish();




        }
    });

    Button cancel = (Button) findViewById(R.id.cancel);
    cancel.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            finish();

        }
    });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            img.setImageURI(selectedImageUri);
        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);


}

public static String getImgPathFromGallary(
        MenuView1Activity menuView1Activity, Uri imguri) {
    // TODO Auto-generated method stub
    return null;
}
}
于 2013-06-29T15:10:47.830 回答