0

私は Android の初心者です。ユーザーが電話ギャラリーの 2 つのランダムな画像を表示するアクティビティを開発したいと考えており、古い方を選択する必要があります。

だから私はこのコードをチュートリアルで見つけて使用しました。SDカード内のすべての画像を表示することで機能します。

しかし、今私の質問です:

グリッドビューでランダムな写真を 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 を使用します。これにより、2 つの画像が得られるわけではありません。これにより、ユーザーは自分の画像フォルダーを表示し、選択できるようになります。私も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 に答える