我正在写一个简单的绘图应用程序。一切都很好,除了我画画时我只能看到它,因为我停止触摸屏幕。我在画画时看不到画面?任何想法?
这是onTouchListener:
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
currentDrawingPath = new DrawingPath();
currentDrawingPath.paint = currentPaint;
currentDrawingPath.path = new Path();
currentBrush.mouseDown(currentDrawingPath.path, motionEvent.getX(), motionEvent.getY());
}else if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
currentBrush.mouseMove( currentDrawingPath.path, motionEvent.getX(), motionEvent.getY() );
}else if(motionEvent.getAction() == MotionEvent.ACTION_UP){
currentBrush.mouseUp( currentDrawingPath.path, motionEvent.getX(), motionEvent.getY() );
drawingSurface.addDrawingPath(currentDrawingPath);
drawingSurface.isDrawing = true;
undoBtn.setEnabled(true);
redoBtn.setEnabled(false);
}
return true;
}
这是DrawingPath类:
public class DrawingPath {
public Path path;
public Paint paint;
public void draw(Canvas canvas) {
canvas.drawPath( path, paint );
}
}
这是主要的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<com.meadows.collin.touchtopaint.DrawingSurface
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/drawingSurface" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerHorizontal="true">
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClick"
android:id="@+id/colorRedBtn"
android:background="@drawable/red_btn" />
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClick"
android:id="@+id/colorBlueBtn"
android:background="@drawable/blue_btn" />
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClick"
android:id="@+id/colorGreenBtn"
android:background="@drawable/green_btn" />
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:onClick="onClick"
android:id="@+id/colorYellowBtn"
android:background="@drawable/yellow_btn" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="U"
android:onClick="onClick"
android:id="@+id/undoBtn" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="R"
android:onClick="onClick"
android:id="@+id/redoBtn" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="S"
android:onClick="onClick"
android:id="@+id/saveBtn" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="P"
android:onClick="onClick"
android:id="@+id/pathBtn" />
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="C"
android:onClick="onClick"
android:id="@+id/circleBtn" />
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:1)
尝试在MotionEvent.ACTION_MOVE案例中使用draw(Canvas画布)
在这里我做了什么,经过测试,结果显示(绘制)了每个动作:
private LinearLayout ll1;
private FrameLayout layout;
private float xAxis = 0;
private float yAxis = 0;
private LinearLayout newLinearLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (FrameLayout) findViewById(R.id.LinearLayout01);
ll1 = (LinearLayout) findViewById(R.id.ll);
newLinearLayout = ll1;
ll1.setOnTouchListener(this);
}
public void redraw() {
mainLayout.removeAllViews();
newLinearLayout.setPadding((int) xAxis, (int) yAxis, 0, 0);
mainLayout.addView(newLinearLayout);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
xAxis = event.getX();
yAxis = event.getY();
redraw();
case MotionEvent.ACTION_UP:
System.out.println("intermediate finished");
}
return true;
}
的xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" >
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Testing" />
</LinearLayout>
</FrameLayout>