前提・実現したいこと
Android Studioでお絵描きアプリを作成しています。お絵描きアプリらしく色を変えたり、線の太さを変えたりすることを実装しようとしています。
今は、線を引くところまでは完成したのですが、ボタンを押して色を変えることができません。
ボタンを押して、ポップアップを表示するところまではできましたが、ボタンを押しても色が変わらないのです。
色々と試してはいるのですが、うまくいかないのでアドバイスお願いしたいです。
MainActivity.java
import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private DrawingView drawingView; Button red_button,blue_button,yellow_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); blue_button= findViewById(R.id.blue_button); red_button= findViewById(R.id.red_button); yellow_button= findViewById(R.id.yellow_button) ; blue_button.setOnClickListener(this); red_button.setOnClickListener(this); yellow_button.setOnClickListener(this); this.drawingView = findViewById(R.id.drawing_view); findViewById(R.id.delete_button).setOnClickListener(deleteDrawing); } View.OnClickListener deleteDrawing = new View.OnClickListener(){ @Override public void onClick(View view){ drawingView.delete(); } }; public void onClick(View v){ switch(v.getId()){ case R.id.blue_button: drawingView.setPen(Color.BLUE); Toast.makeText(this,"blue",Toast.LENGTH_SHORT).show(); break; case R.id.red_button: drawingView.setPen(Color.RED); Toast.makeText(this,"red",Toast.LENGTH_SHORT).show(); break; case R.id.yellow_button: drawingView.setPen(Color.YELLOW); Toast.makeText(this,"yellow",Toast.LENGTH_SHORT).show(); break; } } @Override public void onPointerCaptureChanged(boolean hasCapture) { } }
view.java
import android.content.Context; import android.graphics.Canvas; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.icu.text.RelativeDateTimeFormatter; import android.os.Environment; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class DrawingView extends View { private Paint paint; private Path path; Bitmap bmp = null; Paint pen =new Paint(); public DrawingView(Context context, AttributeSet attrs) { super(context, attrs); this.path = new Path(); this.paint = new Paint(); this.paint.setStyle(Paint.Style.STROKE); this.paint.setAntiAlias(true); this.paint.setStrokeWidth(5); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(path, paint); pen.setStyle(Paint.Style.STROKE); pen.setStrokeWidth(2); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: this.path.moveTo(x, y); break; case MotionEvent.ACTION_MOVE: this.path.lineTo(x, y); break; case MotionEvent.ACTION_UP: this.path.lineTo(x, y); break; } invalidate(); return true; } public void delete() { this.path.reset(); invalidate(); } public void setPen(int color){ pen.setColor(color); } }
試したこと
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/28 07:02 編集
2018/06/28 09:25 編集
2018/06/29 09:39
2018/07/05 22:14
2018/07/05 23:26
2018/07/12 21:55 編集
2018/07/12 23:28
2018/07/19 18:16
2018/07/19 18:41
2018/07/19 18:43
2018/07/19 18:45
2018/07/19 18:47
2018/11/08 21:46
2019/01/07 01:03