Android - установить текущее изображение в режиме просмотра изображений в качестве обоев системы - PullRequest
0 голосов
/ 12 октября 2011

Я создаю простое приложение для обоев, в котором пользователь может просматривать выбранные изображения и легко устанавливать его в качестве нового фона.

Я храню свои drawables / images в массиве, и я не могу по-настоящему обернуться, как правильно ссылаться на текущее изображение в imageview / array.

Как изменить регистр "R.id.bSet" (внизу), чтобы автоматически выбирать изображение из просматриваемого массива и устанавливать его в качестве обоев?

package com.marcus.background;

import java.io.IOException;

import android.app.Activity;
import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class GalleryView extends Activity implements OnClickListener {

    int pos = 0;
    int amount = 10;
    int max = amount - 1;
    int min = 0;
    Button prev, next, set;
    ImageView image;
    Bitmap bitmap;
    final int[] imgs = new int[] { R.drawable.i1, R.drawable.i2, R.drawable.i3,
            R.drawable.i4, R.drawable.i5, R.drawable.i6, R.drawable.i7,
            R.drawable.i8, R.drawable.i9, R.drawable.i10, };

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        image = (ImageView) findViewById(R.id.iView);
        prev = (Button) findViewById(R.id.bPrev);
        next = (Button) findViewById(R.id.bNext);
        set = (Button) findViewById(R.id.bSet);
        image.setImageResource(R.drawable.i1);
        prev.setOnClickListener(this);
        next.setOnClickListener(this);
        set.setOnClickListener(this);

    }

    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.bPrev:
            if (pos > min) {
                pos--;
                image.setImageResource(imgs[pos]);
                ;
            } else {
            }
            break;
        case R.id.bNext:
            if (pos < max) {
                pos++;
                image.setImageResource(imgs[pos]);
                ;
            } else {
            }
            break;
        case R.id.bSet:

            // MAGIC GOES HERE ;)

            bitmap = BitmapFactory.decodeResource(getResources(), 
                    R.drawable.i1);         
            try {
                getApplicationContext().setWallpaper(bitmap);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            // --------------- //

            break;
        }

    }
}

1 Ответ

1 голос
/ 12 октября 2011
// instead of this: 
bitmap = BitmapFactory.decodeResource(getResources(), 
                    R.drawable.i1); 
// try this:    
bitmap = BitmapFactory.decodeResource(getResources(), 
                    imgs[pos]); 
...