gpt4 book ai didi

java - Android绘图/绘画应用程序立即更新?

转载 作者:行者123 更新时间:2023-11-30 04:26:43 26 4
gpt4 key购买 nike

我正在编写一个简单的绘图应用程序。一切都很好,除了当我画画时我只能在我停止触摸屏幕后才能看到它。我在画画时看不到画作?有什么想法吗?

这是 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>

最佳答案

尝试在MotionEvent.ACTION_MOVE情况下使用draw(Canvas canvas)

这里是我所做的、测试的和结果显示(绘制)的每一个 Action :

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>

关于java - Android绘图/绘画应用程序立即更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com