在activity里怎样实现手写功能 在activity里怎样实现手写功能 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用C自己实现了一个。NDK方式。目前正在考虑如何保存笔迹。不知道除了这种方式还有什么方式。楼上说的如何实现呢? 什么意思?Activity, 里面用editText填充不就可以了。 楼主的意思是要用做类似写字板的功能吧? 这个要自定义一个个view,在onTouch时去画path~ 这样应该可以:package com.clwork.fingerpaint;import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.util.DisplayMetrics;import android.util.Log;import android.view.MotionEvent; import android.view.View; import android.view.WindowManager;public class DemoPath extends View { private float mX , mY; private Path mPath; private Paint mPaint; private static final float TOUCH_TOLERANCE = 4; private Bitmap mBitmap; private Canvas mCanvas; private Paint mBitmapPaint; Context mContext ; public DemoPath(Context c) { super(c); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setDither(true); mPaint.setColor(0xff000000); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.MITER); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setStrokeWidth(3); mBitmap = Bitmap.createBitmap(320, 240, Bitmap.Config.ARGB_8888); mCanvas = new Canvas(mBitmap); mPath = new Path(); mBitmapPaint = new Paint(Paint.DITHER_FLAG); } @Override protected void onDraw(Canvas canvas) { canvas.drawColor(0xFFAAAAAA); canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); canvas.drawPath(mPath, mPaint); super.onDraw(canvas); } private void onTouchDown(float x , float y){ mPath.reset(); mPath.moveTo(x, y); mX = x; mY = y; } private void onTouchMove(float x , float y){ float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2); mX = x; mY = y; } } private void onTouchUp(float x , float y){ mPath.lineTo(mX, mY); mCanvas.drawPath(mPath, mPaint); mPath.reset(); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: onTouchDown(x , y); invalidate(); break; case MotionEvent.ACTION_MOVE: onTouchMove(x , y); invalidate(); break; case MotionEvent.ACTION_UP: onTouchUp(x , y); invalidate(); break; default: break; } return true; } } 主activity:package com.clwork.fingerpaint;import android.app.Activity; import android.os.Bundle; public class DemoViewPath extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { DemoPath dp = new DemoPath(this); setContentView(dp); super.onCreate(savedInstanceState); } } android多线程下载能快吗 我来了,android系统源代码115下载 标题要长 求助,textView组件属性autoLink设置了为web,但是如这种情况显示不了成链接形式"你好www.baidu.com你好" 去年5月HTC对Apple的5项专利侵权都有哪5项啊 android webview 在公司真实项目 相对于j2me开发中wtk的内存监测,对象产生频率等功能 加载图片的问题 URL 转成Base64 格式后 请求网络失败,不知道是什么原因 Android Studio 2.2.3 创建空白模板编译出错 携程酒店首页瀑布流如何实现的 Handler的问题 连接网络的问题,谢谢
楼上说的如何实现呢?
这个要自定义一个个view,在onTouch时去画path~
package com.clwork.fingerpaint;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
public class DemoPath extends View {
private float mX , mY;
private Path mPath;
private Paint mPaint;
private static final float TOUCH_TOLERANCE = 4;
private Bitmap mBitmap;
private Canvas mCanvas;
private Paint mBitmapPaint;
Context mContext ;
public DemoPath(Context c) {
super(c);
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xff000000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.MITER);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(3);
mBitmap = Bitmap.createBitmap(320, 240, Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mPath = new Path();
mBitmapPaint = new Paint(Paint.DITHER_FLAG);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
super.onDraw(canvas);
}
private void onTouchDown(float x , float y){
mPath.reset();
mPath.moveTo(x, y);
mX = x;
mY = y;
}
private void onTouchMove(float x , float y){
float dx = Math.abs(x - mX);
float dy = Math.abs(y - mY);
if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
mPath.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
mX = x;
mY = y;
}
}
private void onTouchUp(float x , float y){
mPath.lineTo(mX, mY);
mCanvas.drawPath(mPath, mPaint);
mPath.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
onTouchDown(x , y);
invalidate();
break;
case MotionEvent.ACTION_MOVE:
onTouchMove(x , y);
invalidate();
break;
case MotionEvent.ACTION_UP:
onTouchUp(x , y);
invalidate();
break;
default:
break;
}
return true;
}
} 主activity:
package com.clwork.fingerpaint;import android.app.Activity;
import android.os.Bundle;
public class DemoViewPath extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
DemoPath dp = new DemoPath(this);
setContentView(dp);
super.onCreate(savedInstanceState);
}
}