2017-02-11 5 views
1

私のアプリには私のペイントブラシにサイズを設定するシークバーとのダイアログがあり、これ以下ではこのサイズの簡単なプレビューをしたかったのです。私はImageViewをこのシークバーのすぐ下に作成し、内部に円を描きました。私が以前よりも大きく進歩を遂げている限り、円は想定どおりに動的に成長しますが、進歩を下げると何も起こりません。私は進歩の価値を変えるたびに古いものに新しいサークルが現れていると思うので、サークルを小さくしたいときは見えません。私はsetImageBitmap(null)またはsetImageResource(0)のようなメソッドを試しましたが、うまくいきませんでした。 私のコードは次のようになります。SeekBarを使用してImageViewで円のサイズを動的に更新 - Android

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の毎回をクリアする方法はとても小さな円が見えなくすることができ、私はプログレスバーを変更ありますか?

答えて

1

トリックを行う必要がありますColor.TRANSPARENTPorterDuff.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); 
} 
+0

ありがとう、魅力的なように働いてくれてありがとう! – BednarQ

関連する問題