**这个问题已经得到了成功回答并成为博客文章 <- 点击 **
大家好,我是一名PHP开发者。我想做一件简单的事情——在安卓手机上用手指(带有较大的“仿真笔尖”)在空白页面上画一些东西,并通过HTTP POST将位图存储为JPEG格式的文件到服务器上。
目前,我已经有了一些代码,但它是从一个教程中复制来的,该教程与编写游戏精灵有关,我无法进行适应。
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, 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>
请问有人能帮我吗?我觉得我离成功很近了——我使用blueball
作为钢笔尖,我只想“保存”它,可能我需要在XML页面上添加一个按钮(或菜单)来实现这个功能?我知道这有点困难,但有很多在线上的人们都在询问如何用手指绘制并将其保存到“云”中,如果人们能用示例代码(而不是参考文献)回复,我保证将把它编译成一个适用于所有人的教程。包括我已经非常满意的PHP服务器端代码。