我想用LayerDrawable实现两个圆的重叠效果,按我的想法就是先在第一层的bitmap画一个圆,然后再在第二层的bitmap画个透明的背景透明的圆。
但是按我下面的代码,在第二层画了透明的背景以后,根本就看不到第一层的圆。
下面是代码package com.namespace;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;public class TryDrawActivity extends Activity{
    /** Called when the activity is first created. */

private RelativeLayout layout;
private ImageView imageView_1;
private Drawable[] array;
private Bitmap bitmap1;
private Bitmap bitmap2;
private Paint paint1;
private Paint paint2;
private Canvas canvas1;
private Canvas canvas2;
private LayerDrawable la;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        layout = (RelativeLayout)findViewById(R.id.relativelayout);
        
        imageView_1 = (ImageView)findViewById(R.id.imageView1);
        
        paint1 = new Paint();
        paint1.setColor(Color.WHITE);
        
        bitmap1 = Bitmap.createBitmap(480, 800, Config.RGB_565);
        
        canvas1 = new Canvas(bitmap1);
        canvas1.drawCircle(240, 300, 100, paint1);
        
        paint2 = new Paint();
        paint2.setColor(Color.RED);
        paint2.setAlpha(0);
        
        bitmap2 = Bitmap.createBitmap(480, 800, Config.RGB_565);
        
        canvas2 = new Canvas(bitmap2);
        canvas2.drawRect(0, 0, bitmap2.getWidth(), bitmap2.getHeight(), paint2);
        //canvas2.drawCircle(240, 300, 50, paint2);
        
        array = new Drawable[2];
        
        array[0] = new BitmapDrawable(bitmap1);
        array[1] = new BitmapDrawable(bitmap2);
        
        la = new LayerDrawable(array);
        
        la.setLayerInset(0, 0, 0, 0, 0);
        la.setLayerInset(1, 0, 0, 0, 0);        imageView_1.setImageDrawable(la);
        
    }}
是我的想法不对吗?刚学Android一星期,问题太弱智请见谅……

解决方案 »

  1.   

    突然想起要补充一点:必须要分层,因为之后需要分层操作,不能都画在同一个bitmap上
      

  2.   

    自己解决了,原来是Bitmap.createBitmap( x, y, config)第三个参数的问题,对于图片的处理一直了解不深,猜测可能是位图的属性不对头。
    Config.RGB_565改成Config.ARGB_8888就好了。可能是Config.RGB相对于Config.ARGB少了个A也就是Alpha,透明图,所以绘制出的位图没有透明属性,至于Config.ARGB_8888和Config.ARGB_4444有什么区别就不知道了……望高人指教。
      

  3.   

    Config.ARGB_8888表示32位色图,即ARGB各占8个位,同理Config.ARGB_4444表示16位色图。