【发布时间】:2014-07-15 19:49:26
【问题描述】:
我一直在尝试向这个绘图应用程序添加擦除功能。我本来打算在你移动手指的地方简单地画白色。出于某种原因,我无法让按钮工作。如果我能让这个按钮工作,我将能够添加更多颜色等。 (我没有对 Mainactivity 做过任何事情)
package com.example.draw;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainDrawingView extends View
{
private Paint paint = new Paint();
private boolean erase;
private Path path = new Path();
Button aButton;
public MainDrawingView(Context context, AttributeSet attrs)
{
super(context, attrs);
paint.setAntiAlias(true);
paint.setStrokeWidth(5f);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
aButton = (Button) this.findViewById(R.id.button1);
aButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
erase = !erase;
}
});
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawPath(path, paint);
}
public boolean onTouchEvent(MotionEvent event)
{
if(erase) paint.setColor(Color.WHITE);
else paint.setColor(Color.BLACK);
// Get the coordinates of the touch event.
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Set a new starting point
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
// Connect the points
path.lineTo(eventX, eventY);
break;
default:
return false;
}
// Makes our view repaint and call onDraw
invalidate();
return true;
}
}
Activity_main<
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context="com.example.draw.FullscreenActivity">
<!-- This is the view on which we will draw. -->
<view
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.example.draw.MainDrawingView"
android:id="@+id/single_touch_view"
android:layout_gravity="left|top"
android:background="#ffffff" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</FrameLayout>
【问题讨论】:
-
如果我删除 aButton = (Button) this.findViewById(R.id.button1); aButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { erase = !erase; } });它会正常工作,但按钮不会工作(显然)
标签: java android button view draw