点で絵を描いておしゃれっぽい雰囲気のお絵かき

今回のアプリは頑張ればアプリ化に到達できそうな、予感もありつつ、考え付かないので、書いてしまいます。

描画をするにはやはり、Viewを使うのがお手軽感があります。

↑こんなの作ります。

点で書くの難しいなぁ。と思いながらも、スクリプトは簡単でした。

マニフェストは

特に変更しません。

レイアウトは

直接viewを表示します。

描画用viewは小さすぎる円と大きすぎる円はしきい値を引いたのがポイントでしょうか。

public class TouchCircle extends View {

    public int _x = 200, _y = -100;
    public int _xOld = 200, _yOld = -100;
    public float currentX = 200, currentY = -100;
    public float _xV = 0,_yV = 0;
    
    public TouchCircle(Context context) {
        super(context);
  
    }
    Bitmap _bitmap;
    Canvas _canvas;
    
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        _bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_4444);
        _canvas = new Canvas(_bitmap);
    }
    
    int _count = 0;
    protected void onDraw(Canvas canvas) {
        _count++;
        Paint paint = new Paint();
        int _ran = (int)(Math.random()*200);
        paint.setColor(Color.rgb(255, (int)(_ran+(255-_ran)/8*Math.random()), (int)(_ran+(255-_ran)/8*Math.random())));
        paint.setAntiAlias(true);
        int _size = (int) Math.sqrt((_x - _xOld)*(_x - _xOld)+(_y - _yOld)*(_y - _yOld));
        _size /= 2;
        if(_size<5){
            _canvas.drawCircle((int)(_x+20-40*Math.random()), (int)(_y+20-40*Math.random()), 5, paint);
        }else if(_size<50){
            _canvas.drawCircle((int)(_x+20-40*Math.random()), (int)(_y+20-40*Math.random()), _size, paint);
        }else{
            _canvas.drawCircle((int)(_x+20-40*Math.random()), (int)(_y+20-40*Math.random()), 10, paint);
        }
        canvas.drawBitmap(_bitmap, 0, 0, null);
        _xOld = _x;
        _yOld = _y;
    }

    public boolean onTouchEvent(MotionEvent e) {
        switch (e.getAction()) {
        case MotionEvent.ACTION_DOWN:
            _x = (int) e.getX();
            _y = (int) e.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            _x = (int) e.getX();
            _y = (int) e.getY();
            invalidate();
            break;
        case MotionEvent.ACTION_UP:
            break;
        default:
            break;
        }
        return true;
    }
}

メインのクラスから描画クラスを呼び出します。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TouchCircle _tCircle = new TouchCircle(getApplicationContext());
    setContentView(_tCircle);
}

はいできた!

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑