Android - Canvas mentése Bitmap -ként

Android - Canvas mentése Bitmap -ként
2011-12-10T20:31:07+01:00
2011-12-11T10:26:04+01:00
2022-11-24T00:35:39+01:00
energy89
Sziasztok!

Eléggé új vagyok még az android - programozás terén, ezért elég bizonytalanul mozgok.
Van egy működő alkalmazásom, amivel egy canvas-ra lehet vonalakat rajzolni. A View osztályt bővítettem ki, és felülírtam két metódusát, az OnDraw-ot és az OnTouchEvent-et. Az alkalmazással azt szeretném megvalósítani, hogy ha rákattintok a képernyő alján levő gombra akkor a canvas tartalmát mentse el egy képfájl-ba. Sajna már jó ideje nem haladok semerre, pedig nem hiszem h olyan nehéz lenne ez a feladat.
Ha bárki tud valami ötlettel szolgálni, azt szívesen meghallgatom!

A kibővített View osztályom:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Cap; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class MyView extends View { private Paint paint = new Paint(); private Path path = new Path(); public MyView(Context context, AttributeSet attrs) { super(context, attrs); paint.setAntiAlias(true); paint.setStrokeWidth(5f); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.STROKE); paint.setStrokeJoin(Paint.Join.ROUND); paint.setStrokeCap(Cap.ROUND); this.setBackgroundColor(Color.WHITE); } @Override protected void onDraw(Canvas canvas) { canvas.drawPath(path, paint); } @Override public boolean onTouchEvent(MotionEvent event) { float eventX = event.getX(); float eventY = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: path.moveTo(eventX, eventY); return true; case MotionEvent.ACTION_MOVE: path.lineTo(eventX, eventY); break; case MotionEvent.ACTION_UP: // nothing to do break; default: return false; } //Schedules a repaint. invalidate(); return true; } }


Activity:

import android.app.Activity; import android.os.Bundle; public class CanvasActivity extends Activity { //private SingleTouchEventView st= new SingleTouchEventView(this, null); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

A main.xml fajl

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:gravity="bottom|right"> <p.p.MyView android:id="@+id/viewid" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <Button android:id="@+id/save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" /> </LinearLayout>
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd