在我的应用程序中,我有带有搜索栏的对话框,该对话框为我的画笔设置大小,在此之下,我想对这个大小进行简单的预览。我设法在此搜索栏下方创建了ImageView,并在里面画了一个圆圈。只要我取得比以前更大的进步,一切正常,圆圈就会像预期的那样动态增长,但是当我降低进度时,什么也没发生。我想每次我更改进度值时,新圆圈都会出现在旧圆圈上,所以当我想缩小圆圈时,它看不到。我尝试过setImageBitmap(null)
或setImageResource(0)
等方法,但没有奏效。我的代码如下所示:
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.brush_size,null);
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(view)
.setTitle("Change brush size");
alertDialog = builder.create();
alertDialog.show();
final ImageView imageView = (ImageView)view.findViewById(R.id.image_view);
final Bitmap preview = Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(preview);
final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(mPaintView.getColor());
SeekBar sb = (SeekBar)view.findViewById(R.id.seekBar);
sb.setMax(50);
sb.setProgress(mPaintView.getSize());
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mPaintView.setSize(progress);
canvas.drawCircle(50,50,mPaintView.getSize(),paint);
imageView.setImageBitmap(preview);
}
有没有办法在每次更改进度条时实际清除我的 imageView,以便可以看到较小的圆圈?
用Color.TRANSPARENT
和PorterDuff.Mode.CLEAR
参数绘制它应该可以解决问题。
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mPaintView.setSize(progress);
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)
canvas.drawCircle(50,50,mPaintView.getSize(),paint);
imageView.setImageBitmap(preview);
}