我想用LayerDrawable实现两个圆的重叠效果,按我的想法就是先在第一层的bitmap画一个圆,然后再在第二层的bitmap画个透明的背景透明的圆。
但是按我下面的代码,在第二层画了透明的背景以后,根本就看不到第一层的圆。
下面是代码
- Java code
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一星期,问题太弱智请见谅……
------解决方案--------------------
Config.ARGB_8888表示32位色图,即ARGB各占8个位,同理Config.ARGB_4444表示16位色图。