Sunday, 15 July 2012

java - Make canvas transparent on Android Linear Layout -



java - Make canvas transparent on Android Linear Layout -

im trying create floating activity , on click open transparent canvas drawing. content drawing want create transparent .

what tried is:

final drawingview drawingview = (drawingview) findviewbyid(r.id.drawing);

my drawingview class:

import java.util.arraylist; import android.content.context; import android.graphics.*; import android.graphics.point; import android.graphics.drawable.bitmapdrawable; import android.graphics.drawable.drawable; import android.hardware.camera.size; import android.util.attributeset; import android.util.log; import android.util.pair; import android.view.motionevent; import android.view.view; import android.view.view.ontouchlistener; public class drawingview extends view implements ontouchlistener { private canvas m_canvas; private path m_path; private paint m_paint; arraylist<pair<path, paint>> paths = new arraylist<pair<path, paint>>(); arraylist<pair<path, paint>> undonepaths = new arraylist<pair<path, paint>>(); private float mx, my; private static final float touch_tolerance = 4; public static boolean iseraseractive = false; public drawingview(context context, attributeset attr) { super(context); setfocusable(true); setfocusableintouchmode(true); this.setbackgroundcolor(color.transparent); this.setontouchlistener(this); oncanvasinitialization(); } public void oncanvasinitialization() { m_paint = new paint(); m_paint.setantialias(true); m_paint.setdither(true); m_paint.setcolor(color.parsecolor("#000000")); m_paint.setstyle(paint.style.stroke); m_paint.setstrokejoin(paint.join.round); m_paint.setstrokecap(paint.cap.round); m_paint.setstrokewidth(30); m_canvas = new canvas(); m_canvas.drawcolor(color.argb(0, 255, 255, 255)); m_path = new path(); paint newpaint = new paint(m_paint); paths.add(new pair<path, paint>(m_path, newpaint)); } @override protected void onsizechanged(int w, int h, int oldw, int oldh) { super.onsizechanged(w, h, oldw, oldh); } public boolean ontouch(view arg0, motionevent event) { float x = event.getx(); float y = event.gety(); switch (event.getaction()) { case motionevent.action_down: touch_start(x, y); invalidate(); break; case motionevent.action_move: touch_move(x, y); invalidate(); break; case motionevent.action_up: touch_up(); invalidate(); break; } homecoming true; } @override protected void ondraw(canvas canvas) { (pair<path, paint> p : paths) { canvas.drawpath(p.first, p.second); } } private void touch_start(float x, float y) { if (iseraseractive) { m_paint.setcolor(color.white); m_paint.setstrokewidth(6); paint newpaint = new paint(m_paint); // clones mpaint object paths.add(new pair<path, paint>(m_path, newpaint)); } else { m_paint.setcolor(color.black); m_paint.setstrokewidth(30); paint newpaint = new paint(m_paint); // clones mpaint object paths.add(new pair<path, paint>(m_path, newpaint)); } m_path.reset(); m_path.moveto(x, y); mx = x; = y; } private void touch_move(float x, float y) { float dx = math.abs(x - mx); float dy = math.abs(y - my); if (dx >= touch_tolerance || dy >= touch_tolerance) { m_path.quadto(mx, my, (x + mx) / 2, (y + my) / 2); mx = x; = y; } } private void touch_up() { m_path.lineto(mx, my); // commit path our offscreen m_canvas.drawpath(m_path, m_paint); // kill don't double draw m_path = new path(); paint newpaint = new paint(m_paint); // clones mpaint object paths.add(new pair<path, paint>(m_path, newpaint)); }

my activity main xml:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawing_question" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginleft="0dp" android:layout_marginright="0dp" android:orientation="horizontal" android:visibility="visible" > <com.swap.handdrawing.drawingview android:id="@+id/drawing" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_marginbottom="0dp" android:layout_marginright="0dp" android:background="@null" > </com.swap.handdrawing.drawingview> </linearlayout>

& how can create this:

java android android-layout canvas

No comments:

Post a Comment