Обновление приложения для рисования / рисования для Android Немедленно? - PullRequest
1 голос
/ 03 декабря 2011

Я пишу простое приложение для рисования.Все отлично работает, за исключением того, что я рисую, я вижу только ПОСЛЕ того, как я перестаю касаться экрана ... Я не вижу рисунок во время рисования?Любые идеи?

Вот 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>

1 Ответ

1 голос
/ 03 декабря 2011

Попробуйте использовать рисование (холст Canvas) в случае MotionEvent.ACTION_MOVE

Здесь то, что я делал, тестировал, и результат показывался (рисовался) при каждом движении:

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>
...