He creado una sencilla demostración de la aplicación en android para el dibujo ,ahora puede decir cómo me puedo quitar de la vista y limpia la pantalla con un solo clic .Me han tratado como a continuación:por favor me ayude a hacerlo….gracias de antemano..!

main.java

package com.example.singletouch;
import com.example.singletouch.R.attr;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
ImageView pen;
SingleTouchView mDrawView;
ImageView remove;
LinearLayout pens;
LinearLayout pen1, pen2, pen3, pen4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawView = (SingleTouchView) findViewById(R.id.myview);
pen = (ImageView) findViewById(R.id.pen);
pens = (LinearLayout) findViewById(R.id.linear);
pens.setVisibility(View.GONE);
pen1 = (LinearLayout) findViewById(R.id.pen1);
pen2 = (LinearLayout) findViewById(R.id.pen2);
pen3 = (LinearLayout) findViewById(R.id.pen3);
pen4 = (LinearLayout) findViewById(R.id.pen4);
remove=(ImageView)findViewById(R.id.remove);
/*
* pen1.setOnClickListener(this); pen2.setOnClickListener(this);
* pen3.setOnClickListener(this); pen4.setOnClickListener(this);
*/
pen.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//TODO Auto-generated method stub
pens.setVisibility(View.VISIBLE);
}
});pens.setVisibility(View.GONE);
pen1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mDrawView.setPen(SingleTouchView.DrawingPens.PEN_1);
pens.setVisibility(View.GONE);
}
});
pen2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mDrawView.setPen(SingleTouchView.DrawingPens.PEN_2);
pens.setVisibility(View.GONE);
}
});
pen3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pens.setVisibility(View.GONE);
mDrawView.setPen(SingleTouchView.DrawingPens.PEN_3);
}
});
pen4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pens.setVisibility(View.GONE);
mDrawView.setPen(SingleTouchView.DrawingPens.PEN_4);
}
});
remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}

SingleTouchView.java

    package com.example.singletouch;
import java.util.AbstractMap;
import java.util.Map;
import java.util.concurrent.ConcurrentLinkedQueue;
import android.R.color;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff.Mode;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Switch;
public class SingleTouchView extends View{
public int width;
public  int height;
public Bitmap  mBitmap;
public Canvas  mCanvas;
public Path    mPath;
public Paint   mBitmapPaint;
Context context;
public Paint circlePaint;
public Path circlePath;
public enum DrawingPens {
PEN_1(6),
PEN_2(4),
PEN_3(2),
PEN_4(1);
final public Paint mPaint;
/**
* Constructor
*
* @param width width of stroke
* @param color color of stroke
*/
private DrawingPens(final int width) {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setStrokeWidth(width);
//mPaint.setColor(color);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
}
/**
* @return corresponding paint
*/
Paint getPaint() {
return mPaint;
}
}
public SingleTouchView(final Context context) {
super(context);
init(context);
}
public SingleTouchView(final Context context, final AttributeSet attrs) {
super(context, attrs);
init(context);
}
public SingleTouchView(final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
init(context);
}
/** To store Paint - Path relation */
//TODO: depending on exact limits, more optimal ways can be found
private ConcurrentLinkedQueue<Map.Entry<Path, DrawingPens>> mPaths = new ConcurrentLinkedQueue<Map.Entry<Path, DrawingPens>>();
/** Cached current path, <b>NOTE:</b> this field is tail at mPaths and is used it only for caching, not drawing */
private Path mCurrentPath;
/**
* Inits internal views data, should be called from every constructor
*
* @param context {@link Context}
*/
private void init(final Context context) {
/* TODO: if some values of paints cannot be determined in static context (in enum),
then Paints should be created here and used via EnumMap */
//Initial pen
setPen(DrawingPens.PEN_1);
}
@Override
public void onDraw(Canvas canvas){
//just to draw background
super.onDraw(canvas);
//Draw all paths
for (Map.Entry<Path, DrawingPens> entry : mPaths) {
canvas.drawPath(entry.getKey(), entry.getValue().getPaint());
}
}
@Override
public boolean onTouchEvent(MotionEvent me){
float eventX = me.getX();
float eventY = me.getY();
switch (me.getAction()) {
case MotionEvent.ACTION_DOWN:
mCurrentPath.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
mCurrentPath.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate();
return true;
}
/**
* Setter for new pen
*
* @param pen {@link DrawingPens} to be used for next drawing
*/
public void setPen(final DrawingPens pen) {
//put latest item to the queue
mCurrentPath = new Path();
mPaths.add(new AbstractMap.SimpleImmutableEntry<Path, DrawingPens>(mCurrentPath, pen));
}
public void clear(View v){
}
}

main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" >
<com.example.singletouch.SingleTouchView
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/pen" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/menubar"
android:padding="2dp"
android:weightSum="4" >
<ImageView
android:id="@+id/pen"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:gravity="center"
android:src="@drawable/pen" />
<ImageView
android:id="@+id/eraser"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:src="@drawable/eraser" />
<ImageView
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:src="@drawable/color" />
<ImageView
android:id="@+id/remove"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_weight="1"
android:src="@drawable/remove" />
</LinearLayout>
<LinearLayout
android:id="@+id/linear"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout1"
android:layout_alignParentLeft="true"
android:background="#eeeeee"
android:orientation="horizontal"
android:visibility="gone"
android:weightSum="4" >
<LinearLayout
android:id="@+id/pen1"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/pen1" />
</LinearLayout>
<LinearLayout
android:id="@+id/pen2"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/pen2" />
</LinearLayout>
<LinearLayout
android:id="@+id/pen3"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/pen3" />
</LinearLayout>
<LinearLayout
android:id="@+id/pen4"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/pen4" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
No estoy seguro de lo que quieres decir, pero tal vez esto puede ayudar a: stackoverflow.com/questions/8181191/…
la publicación de mi archivo xml de modo que u obtendrá idea…!quiero borrar todos los caminos que he dibujado con un solo click…!
Queridos jigar, si desea borrar la dibujé pathes sólo podía borrar de su lienzo mediante la configuración de su color. No es necesario quitar la vista. Para borrar el contenido de mPaths simplemente asignar @null. La basura colletector va a limpiar la memoria. Me gustaría recomendar a agregar o quitar puntos de vista solamente, si usted tiene un mutable número de vistas de un mismo tipo en su diseño, por ejemplo, si usted tiene más de uno de los lienzos y desea eliminar uno de ellos.
poner un poco de código…hermano..!

OriginalEl autor jigar | 2013-07-25

3 Comentarios

  1. 4

    Jus uso …

    mCanvas.drawColor(Color.BLACK);

    … para la limpieza de la tela o de cualquier otro color que usted desea tener en el fondo. E. g.

    remove.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    //clear canvas contents  
    mCanvas.drawColor(Color.BLACK);
    //create new path list; old one will be garbage collected 
    ConcurrentLinkedQueue<Map.Entry<Path, DrawingPens>> mPaths = 
    new ConcurrentLinkedQueue<Map.Entry<Path, DrawingPens>>();
    pens.setVisibility(View.VISIBLE);
    }

    p.s.: para eliminar una vista de forma dinámica a partir de su contenedor de uso removeView(....), por ejemplo,

    ((ViewGroup)viewToRemove.getParent()).removeView(viewToRemove);

    Espero que esto ayude … Saludos!

    con éxito claro de la pantalla de diseño.removeAllViews(); pero…después de que yo no soy capaz de dibujar de nuevo con mi pluma…! 🙁
    Queridos jigar, si se quita de la vista significa que el objeto subyacente que contiene el lienzo será eliminado. Así que si quieres continuar el dibujo tiene que crear un nuevo lienzo de forma dinámica en primer lugar. Sin embargo, Si usted tiene sólo un lienzo todo el tiempo, yo no creo que usted necesita para eliminar/eliminar. Simplemente borre el pintado de rutas de acceso, líneas, arcos, etc. al borrar el contenido del lienzo. Uso drawColor(...) para esto.
    por favor, dame un «draw de color()» código por favor..:)
    Echa un vistazo añadido onClick() arriba 🙂
    @trinimon-Donde????

    OriginalEl autor Trinimon

  2. 4
    remove.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    layout.removeView(mDrawView);
    mDrawView = new SingleTouchView(MainActivity.this);
    layout.addView(mDrawView);
    }
    });
    Se ve como una opción válida 🙂 … lo mismo que he dicho: si quitar la lona (ver) es necesario crear un nuevo lienzo (ver) … 🙂

    OriginalEl autor jigar

  3. -1

    Poner la parte de la pantalla que desea borrar en un solo layout en xml por ejemplo

    <RelativeLayout
    android:id="@+id/layout"
    android:layout_width="wrap_content"
    android:layout_height= "wrap_content">
    The Views that have to be gone on click
    </RelativeLayout>

    A continuación, en el código en onClick() de el botón de dar

    ((RelativeLayout) findViewById(R.id.layout)).setVisiblity(View.GONE));

    EDICIÓN :

    Si quieres la ImageView borra uso :

    ((ImageView) findViewById(R.id.imageView)).setImageDrawable(null);
    Esto sólo deja a la vista desaparecer 🙂
    no es una buena práctica…..!!!quiero borrarlo para siempre ….!!!que no aparezcan de nuevo…!
    tiene alguna solución…bro.?
    Estoy un poco confundida de lo que usted está buscando. Primero pensé que desea borrar (dibujo) de la lona, pero que no parece ser el caso. Ahora, parece que están buscando algo como se describe en stackoverflow.com/questions/3805599/add-delete-view-from-layout (es decir, quitar la vista de los padres de diseño). Para ser honesto: no creo que esto sea una buena idea, pero puede ser de ayuda 😉
    Exactamente, ¿qué desea? ¿Quieres la vista para volver a aparecer? Si es así, puede establecer la visibilidad como VISIBLE cada vez que usted quiere que suceda

    OriginalEl autor user2041902

Dejar respuesta

Please enter your comment!
Please enter your name here