0

これを簡単にします。mImages[position]にアクセスすることで 、設定したい画像をImageView取得できAlertDialogます。DrawablesImageView

ここに簡単な説明があります(以下の完全な説明):要するに、メインアクティビティからダイアログに画像を渡し、ダイアログをキャンセルdismissしてシステムの壁紙を設定することを確認する方法が必要です(メインアクティビティから渡された画像に) ) 次にfinish();アクティビティ。

完全な説明は次のとおりです。

ユーザーには と が表示され、GalleryImageViewフォーカスGalleryがある画像の大きなプレビューが表示されますGallery

に表示される画像は、Gallery次を使用してセットアップされます。

        // setup wallpaper array
private void findWallpapers() {
    mThumbs = new ArrayList<Integer>(24);
    mImages = new ArrayList<Integer>(24);

    final Resources resources = getResources();
    final String packageName = getApplication().getPackageName();

    addWallpapers(resources, packageName, R.array.wallpapers);
}

// setup array defining all wallpapers & define thumbnails
private void addWallpapers(Resources resources, String packageName, int list) {
    final String[] extras = resources.getStringArray(list);
    for (String extra : extras) {
        int res = resources.getIdentifier(extra, "drawable", packageName);
        if (res != 0) {
            final int thumbRes = resources.getIdentifier(extra + "_small",
                    "drawable", packageName);

            if (thumbRes != 0) {
                mThumbs.add(thumbRes);
                mImages.add(res);
            }
        }
    }
}

「壁紙の設定」Buttonを押すと、AlertDialogが開き、 でフォーカスされた画像の別のプレビューが表示されGalleryます。AlertDialogには、指示TextView、壁紙として設定することを提案している画像のプレビュー、「OK」Buttonと「キャンセル」が含まれButtonます。[OK] を押すと、プレビューButtonの画像が.ImageViewInputStream

再度、感謝します!

    private void selectWallpaper(int position) {
    Toast.makeText(getBaseContext(), "Select Wallpaper", Toast.LENGTH_SHORT)
            .show();

    if (mIsWallpaperSet) {
        return;
    }

    mIsWallpaperSet = true;

    Context context = this;
    // CharSequence text = "Wallpaper Set!";
    // int duration = Toast.LENGTH_LONG;
    InputStream stream = getResources().openRawResource(
            mImages.get(position));
            final Dialog accept = new Dialog(context);
    accept.setContentView(R.layout.confirm);
    accept.setTitle("Please Confirm");
    TextView instructions = (TextView) accept.findViewById(R.id.textView1);
    instructions.setText("Would you like to set this as your wallpaper?");
    ImageView wallpreview = (ImageView) accept
            .findViewById(R.id.imageView1);
    wallpreview.createFromStream(stream, "test");
    // SETUP cancel (no btn) listener
    Button cancelbtn = (Button) accept.findViewById(R.id.button2);
    cancelbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            accept.dismiss();
        }
    });
    // SETUP Yes Btn listener
    Button okbtn = (Button) accept.findViewById(R.id.button1);
    okbtn.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            // dismiss being used as placeholder, actually setting wallpaper
            // will be added
            accept.dismiss();
        }
    });
    accept.show();
}

{
    ;
}
4

1 に答える 1

0

レイアウト インフレータを使用してアラート ダイアログ レイアウトを拡張し、それをメイン アクティビティのアラート ダイアログのビューに割り当てることができます。これらのボタンの onClickListeners リスナーを設定するには、findViewById() を使用します。これにより、onClickListener が mImage を確実に認識できるようになります。

final ArrayList<Integer> mImages=new ArrayList<Integer>();
final ImageView v=findViewById(R.id.imageView);

AlertDialog d=new AlertDialog.Builder(Main.this).create();
d.setView(getLayoutInflater().inflate(R.layout.dialogView,findViewById(R.id.ROOT_LAYOUT_IN_XML_ID),false));

((ImageView)d.findViewById(R.id.YOUR_VIEW_ID)).setImageResource(mImages.get(?));

((Button)d.findViewById(R.id.cancelButton)).setOnClickListener(new OnClickListener()
{
    d.dismiss();
});
((Button)d.findViewById(R.id.acceptButton)).setOnClickListener(new OnClickListener()
{
    v.setImageResource(mImages.get(?));
    d.dismiss();
});
于 2012-04-08T02:45:56.993 に答える