一系列可绘图像

时间:2012-01-05 09:54:43

标签: android

好的,首先我将带您了解我的应用程序的基础知识。到目前为止,您使用相机拍照,然后将其保存到文件夹中。拍摄照片后,将打开一个新的活动,并在ImageView

屏幕上显示图片

我试图实现的效果是能够使用onClick事件在ImageView中的图片顶部创建png图层。所以说我有5个透明的png我希望有5个onClick事件,每次触摸屏幕时,新的png图像将显示在ImageView的图片顶部,因此需要5点onClick(触摸屏幕)显示图片顶部的所有透明png。

我认为我差点使用下面的代码,但我认为我需要在array文件夹中创建需要与每个onClick事件一起显示的drawable个图像,我认为数组应为nextBitmap但不确定。

更新Sparkys回答

我尝试添加private Integer[] nextBitmap = { R.drawable.img1, R.drawable.img2 };,但我收到错误The method getBitmapOverlay(Bitmap, Bitmap, int, int) in the type BeatEmUp is not applicable for the arguments (Bitmap, Integer[], int, int)任何人都知道这可以做什么我需要在private Integer[]......方法之外添加onCreate?< / p>

public class Image extends Activity {

Bitmap myBitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Image);

    String myRef = this.getIntent().getStringExtra("filepath");
    File imgFile = new  File(myRef);
    Log.e("No ref", myRef);

    if(imgFile.exists()) {
        final Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
        final ImageView myImage = (ImageView) findViewById(R.id.beatemup);
        myImage.setImageBitmap(myBitmap);
        myImage.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                myBitmap = getBitmapOverlay(myBitmap, nextBitmap, 0, 0);
                myImage.setImageBitmap(myBitmap);
            }
        });
    }
}

public static Bitmap getBitmapOverlay(Bitmap bmp1, Bitmap bmp2, int left, int top) {
    Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(),  bmp1.getConfig());
    Canvas canvas = new Canvas(bmOverlay);    
    canvas.drawBitmap(bmp1, 0, 0, null);
    canvas.drawBitmap(bmp2, left, top, null);
    return bmOverlay;
}
}

2 个答案:

答案 0 :(得分:2)

好的,我已经为你准备了一份可能正在寻找的小样本。

我在这里违反了自己的规则,因为我为你做了代码。由于我知道您是初学者,因此在使用之前应该明确地理解以下代码

public class Image extends Activity {

    Bitmap myBitmap;
    Integer[] mBitmapIds = new Integer[] { R.drawable.ic_launcher, R.drawable.ic_launcher };
    Random mRand = new Random();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myBitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);
        final ImageView myImage = (ImageView) findViewById(R.id.imageview);
        myImage.setImageBitmap(myBitmap);
        myImage.setOnClickListener(new OnClickListener() {
            int i = 0;

            public void onClick(View v) {
                if (i >= mBitmapIds.length) {
                    i = 0;
                }
                myImage.setImageBitmap(getBitmapOverlay(myBitmap, BitmapFactory.decodeResource(getResources(), mBitmapIds[i]), 0, 0));
            }
        });
    }

    public Bitmap getBitmapOverlay(Bitmap bmp1, Bitmap bmp2, int left, int top) {
        Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(),
                bmp1.getHeight(), bmp1.getConfig());
        Canvas canvas = new Canvas(bmOverlay);
        canvas.drawBitmap(bmp1, 0, 0, null);
        left += mRand.nextInt(20);
        top += mRand.nextInt(20);
        canvas.drawBitmap(bmp2, left, top, null);
        return bmOverlay;
    }
}

答案 1 :(得分:0)

有关Drawables引用数组的示例,请参阅Hello, Views tutorial, GridView chapter