我想用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一星期,问题太弱智请见谅……
但是按我下面的代码,在第二层画了透明的背景以后,根本就看不到第一层的圆。
下面是代码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一星期,问题太弱智请见谅……
解决方案 »
- 安卓开发问题:The following classes could not be found: com.google.android.map.Mapview
- Android获取root权限
- 集成可卸载第三方应用----来者有分
- Android RTP库应用
- 谁给一个DES加密解密算法,带注释的
- android平台 pinyin4j 汉字转换中文问题
- 选择打开应用提示对话框!!!
- 视频通话中,两个surfaceview如何互换各自显示内容?
- 现在开始转做Android开发了,是用Eclipse好还是Android Studio好呢?
- Listview是如何确定哪个布局是他的布局子项?
- 新手问题,NDK编译C代码如何引用第三方库?
- handler 对应的run方法神奇运行两次!高人指教~
Config.RGB_565改成Config.ARGB_8888就好了。可能是Config.RGB相对于Config.ARGB少了个A也就是Alpha,透明图,所以绘制出的位图没有透明属性,至于Config.ARGB_8888和Config.ARGB_4444有什么区别就不知道了……望高人指教。