2012-01-23 7 views
0

ペイントブラシとして機能するようにプログラムで円を描いていますが、スケーリングに問題があります。私は、半径の値をseekbarメソッドの進捗状況に関連づけて数値化しましたが、私がタブレットに触れると、ブラシはまだ同じサイズです。私がシークバーをスライドさせている間、ブラシを常にスケーリングし直す方法を教えてください。ここでアンドロイド:シークバーを使って円をどのようにスケールするのですか?

答えて

0

あなたに有益な希望

private class test extends View { 
    private int radius; 

    public test(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     Paint paint = new Paint(); 
     paint.setAntiAlias(false); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setColor(Color.RED); 

     // RectF rect = new RectF(100, 100, 200, 200); 
     // canvas.drawRect(rect, paint); 
     canvas.drawCircle(50, 50, getRadius(), paint); 
     canvas.drawLine(10, 10, 10, 10 + 15, paint); 

    } 

    /** 
    * @param radius the radius to set 
    */ 
    public void setRadius(int radius) { 
     this.radius = radius; 
    } 

    /** 
    * @return the radius 
    */ 
    public int getRadius() { 
     return radius; 
    } 
} 
あなたの活動の

LinearLayout layout = new LinearLayout(this); 
    layout.setLayoutParams(new LayoutParams(320, 420)); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    tt = new test(this); 
    tt.setLayoutParams(new LayoutParams(100, 200)); 
    layout.addView(tt); 

    SeekBar bar = new SeekBar(this); 
    bar.setMax(40); 
    bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, 
       boolean fromUser) { 
      // TODO Auto-generated method stub 
      tt.setRadius(progress); 
      tt.invalidate(); 
     } 
    }); 

    layout.addView(bar); 

    setContentView(layout); 

バーの進捗状況を求める上の円の半径を変更するためのコードです。

+0

は、私はちょうど今ことを試みたが、私のサークルは文句を言わないオーバーライド 公共ボイドはonProgressChanged \t \t \t(シークバーシークバー、int型の進捗状況を、 \t \t \t \t \tブールFROMUSER){ \t \t \t \t \t \t \t \tを表示しますcurrentVal = progress + brushNumSize; \t \t \t \t radius.radius = currentVal; \t \t \t \t brushSize.setText( "ブラシサイズ" + Integer.toString(currentVal)); \t \t \t \t \t \t \t} \t \t})。 – SpicyWeenie

+0

私の編集したコードを確認してください –

+0

この例をありがとう。私はそれを試しましたが、私のサークルは消えて... – SpicyWeenie

関連する問題