如何在Android应用程序中用手指绘制东西…并将其保存到网络上

如何在Android应用程序中用手指绘制东西…并将其保存到网络上,第1张

概述** THIS QUESTION WAS SUCCESSFULLY ANSWERED AND HAS BECOME A BLOG POST <- click ** 嗨,我是一个PHP开发人员,我想做一个简单的事情 – 我想绘制一个在Android手机空白页面上绘制的东西(手指带有大量“模拟笔尖”),并将位图存储为一个jpeg服务器通过http post. 这是我到目前为止,但是这是从a tutor ** THIS QUESTION WAS SUCCESSFULLY ANSWERED AND HAS BECOME A BLOG POST <- click **

嗨,我是一个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应用程序中用手指绘制东西…并将其保存到网络上所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1132283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存