嗨,我是一个PHP开发人员,我想做一个简单的事情 – 我想绘制一个在AndroID手机空白页面上绘制的东西(手指带有大量“模拟笔尖”),并将位图存储为一个jpeg服务器通过http post.
这是我到目前为止,但是这是从a tutorial开始,涉及到写一个游戏的精灵.我不能适应
package com.my.example;import androID.app.Activity;import androID.content.Context;import androID.graphics.Bitmap;import androID.graphics.BitmapFactory;import androID.graphics.Canvas;import androID.os.Bundle;import androID.vIEw.MotionEvent;import androID.vIEw.SurfaceHolder;import androID.vIEw.SurfaceVIEw;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OntouchListener;public class DrawCapture extends Activity implements OntouchListener{ OurVIEw v; Bitmap ball; float x,y; @OverrIDe protected voID onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentVIEw(R.layout.draw_capture); v = new OurVIEw(this); v.setontouchListener(this); ball = BitmapFactory.decodeResource(getResources(),R.drawable.blueball); x = y = 0; setContentVIEw(v); } @OverrIDe protected voID onPause(){ super.onPause(); v.pause(); } protected voID onResume(){ super.onResume(); v.resume(); } public class OurVIEw extends SurfaceVIEw implements Runnable{ Thread t = null; SurfaceHolder holder; boolean isItOK = false; public OurVIEw(Context context) { super(context); holder = getHolder(); } public voID run() { while (isItOK == true){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printstacktrace(); } //perform canvas drawing if (!holder.getSurface().isValID()){ continue; } Canvas c = holder.lockCanvas(); onDraw(c); holder.unlockCanvasAndPost(c); } } public voID onDraw(Canvas c){ c.drawARGB(255,210,210); c.drawBitmap(ball,x - (ball.getWIDth()/2),y - (ball.getHeight()/2),null); } public voID pause(){ isItOK = false; while(true){ try{ t.join(); } catch(InterruptedException e){ e.printstacktrace(); } break; } t = null; } public voID resume(){ isItOK = true; t = new Thread(this); t.start(); } } public boolean ontouch(VIEw v,MotionEvent me){ switch (me.getAction()){ case MotionEvent.ACTION_DOWN : x = me.getX(); y = me.getY(); break; case MotionEvent.ACTION_UP : x = me.getX(); y = me.getY(); break; case MotionEvent.ACTION_MOVE : x = me.getX(); y = me.getY(); break; } return true; }}
这里是XML
<?xml version="1.0" enCoding="utf-8"?><SurfaceVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" ></SurfaceVIEw>
有人可以帮帮我吗?我觉得我很亲密 – 我用蓝色的笔尖作为笔尖,我只想“保存”这个,可能需要在XML页面上有一个按钮(或菜单)来做到这一点?我知道这是一个乞讨,但有很多人在线询问如何绘制与你的手指,并保存一些东西到“云”,如果人们可以回应代码的例子(不是参考)我保证我将编译这个成为一个适当的教程片段,为所有人的最终利益.包括我已经很满意的PHP服务器端代码.
解决方法 您可以尝试使用Google提出的Gesture对象,尝试执行以下代码:Activity1 xml:
<?xml version="1.0" enCoding="utf-8"?> <relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#FFFFFF" > <androID.gesture.GestureOverlayVIEw androID:ID="@+ID/gestures" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:fadeEnabled="false" androID:fadeOffset="5000000000" androID:gesturecolor="#000000" androID:gesturestrokeType="multiple" androID:gesturestrokeWIDth="1" androID:uncertainGesturecolor="#000000" androID:layout_above="@+ID/save_button" /> <button androID:ID="@ID/save_button" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParentBottom="true" androID:layout_centerHorizontal="true" androID:layout_marginBottom="20sp" androID:paddingleft="20sp" androID:paddingRight="20sp" androID:text="Save" androID:textSize="22sp" /> </relativeLayout>
Activity1 java:
package com.testandroIDproject;import java.io.ByteArrayOutputStream;import androID.app.Activity;import androID.content.Intent;import androID.gesture.GestureOverlayVIEw;import androID.graphics.Bitmap;import androID.graphics.color;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.Toast;public class Activity1 extends Activity { private button button_save; private GestureOverlayVIEw gesture; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); gesture = (GestureOverlayVIEw) findVIEwByID(R.ID.gestures); button_save = (button) findVIEwByID(R.ID.save_button); button_save.setonClickListener(new OnClickListener() { @OverrIDe public voID onClick(VIEw arg0) { try { Bitmap gestureimg = gesture.getGesture().toBitmap(100,100,8,color.BLACK); ByteArrayOutputStream bos = new ByteArrayOutputStream(); gestureimg.compress(Bitmap.CompressFormat.PNG,bos); byte[] barray = bos.toByteArray(); Intent intent = new Intent(Activity1.this,Activity2.class); intent.putExtra("draw",barray); startActivity(intent); } catch (Exception e) { e.printstacktrace(); Toast.makeText(Activity1.this,"No draw on the string",3000).show(); } } }); }}
Activity2 xml:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#FFFFFF" androID:orIEntation="vertical" > <ImageVIEw androID:ID="@+ID/image_saved" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center_horizontal" /></linearLayout>
Activity2 java:
package com.testandroIDproject;import java.io.ByteArrayinputStream;import androID.app.Activity;import androID.graphics.BitmapFactory;import androID.os.Bundle;import androID.Widget.ImageVIEw;public class Activity2 extends Activity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.display_image); ImageVIEw image = (ImageVIEw) findVIEwByID(R.ID.image_saved); ByteArrayinputStream imagestreamClIEnt = new ByteArrayinputStream( getIntent().getExtras().getByteArray("draw")); image.setimageBitmap(BitmapFactory.decodeStream(imagestreamClIEnt)); }}
希望你会发现这有帮助.
总结以上是内存溢出为你收集整理的如何在Android应用程序中用手指绘制东西…并将其保存到网络上全部内容,希望文章能够帮你解决如何在Android应用程序中用手指绘制东西…并将其保存到网络上所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)