好的,我正在尝试制作一个利用 linedrawview 的程序。当用户启动一个触摸事件(动作 DOWN)时,它会获取当前的 x 和 y 并将它们存储在变量中。然后,当用户四处拖动手指时,会绘制一条线并以橡皮筋的方式进行动画处理。最后,当用户放手(动作 UP)时,该线被创建。我在这方面遇到了很多麻烦,希望得到一些帮助。到目前为止,我的 LineDrawView.java 代码:
// Project: Java2LineDrawEx
// File: LineDrawView.java
// Date: 4/9/13
// Author: Joshua Lefelhocz
// Description: custom view to draw lines on
package com.lcc.java2lab11lefelhocz;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.View;
// Notice this class extends View
public class LineDrawView extends View
{
// This view's bounds
private int xMin = 0;
private int xMax;
private int yMin = 0;
private int yMax;
private float currentX;
private float currentY;
// Paint object
private Paint paintFill;
// constructor
public LineDrawView(Context context)
{
// call the super class constructor
super(context);
// The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
// For efficiency create the paint objects in the constructor, not in draw
// paint.setStrokeWidth(10); // works on lines
// You can change the color of Paint without effecting objects already drawn
// You can NOT change the style of Paint without effecting objects already drawn
// The Style, TextSize apply to all objects drawn with the paint.
// Create a default Paint object Style=Fill
paintFill = new Paint();
// set the background color when the view is created
this.setBackgroundColor(Color.LTGRAY);
}
// Called to draw the view. Also called by invalidate().
@Override
protected void onDraw(Canvas canvas)
{
// canvas.drawColor(Color.LTGRAY); // this works in onDraw to set the background color
// Draw a Red Diagonal line from upper left corner to bottom right corner
paintFill.setColor(Color.RED);
canvas.drawLine(xMin, yMin, xMax, yMax, paintFill);
// draw a blue line 10 pixels wide horizontal across the center.
paintFill.setColor(Color.BLUE);
paintFill.setStrokeWidth(10);
canvas.drawLine(xMin, yMax/2, xMax, yMax/2, paintFill);
// draw a yellow line 20 pixels wide vertical across the center.
paintFill.setColor(Color.YELLOW);
paintFill.setStrokeWidth(20);
canvas.drawLine(xMax/2, yMin, xMax/2, yMax, paintFill);
}
// Called when the view is first created or its size changes.
@Override
public void onSizeChanged(int width, int height, int oldWidth, int oldHeight)
{
// Set the view bounds
xMax = width-1;
yMax = height-1;
}
public boolean onTouchEvent(MotionEvent event)
{
currentX = event.getX();
currentY = event.getY();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
float startX = currentX;
float startY = currentY;
case MotionEvent.ACTION_MOVE:
float endX =
case MotionEvent.ACTION_UP:
return super.onTouchEvent(event);
}
return super.onTouchEvent(event);
}
}