2017-02-11 2 views
1

в моем приложении У меня есть диалог с поисковым баром, который задает размер моей кисти и ниже этого я хотел сделать простой предварительный просмотр этого размера. Мне удалось создать ImageView чуть ниже этой стрелки и нарисовать круг внутри. Пока я делаю прогресс больше, чем раньше, все работает нормально, круг динамически растет, как и предполагалось, но когда я опускаю прогресс, ничего не происходит. Я предполагаю, что каждый раз, когда я меняю прогресс, значение нового круга появляется на старом, поэтому, когда я хочу сделать круг меньше, его не видно. Я пробовал такие методы, как setImageBitmap(null) или setImageResource(0), но это не сработало. Моего код выглядит следующим образом:Динамическое обновление размера круга в ImageView с помощью SeekBar - 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.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); 
} 
+0

Большое вам спасибо, работал как шарм! – BednarQ

Смежные вопросы