关于Android中GestureOverlayView多笔画的问题
2011-09-22 23:52
351 查看
关于Android中GestureOverlayView多笔画的问题
前段时间做了个事业单位稽查的项目,客户要求系统支持现场电子签名,由于做android没多久,这个问题缠绕了我很长时间,现在终于完美解决这个问题了,现在把关键代码贡献给大家.
此代码关键的位置就在类中的最后面清除的代码,我看到论坛里很多人询问关于多笔画的问题,关于手势多笔画总是要在很短时间内输入,而不可以相隔很长时间,这是我们要在xml中的GestureOverlayView 中加入android:fadeOffset=”3600000” 这段代码,这断代码的含义就是使多笔画每两次的间隔时间延长,3600000是代表毫秒,也就是说这里我让每两次笔画的时间间隔延长了一小时.
当添加的上面的代码以后,可以解决笔画的间隔问题,但是相应的clear()清除方法的时间也会变为3600000毫秒,这个很显然是不可行的,所以我们要在清除前加入mGestureOverlayView.setFadeOffset(100);
这段代码的意思就是把每次多笔画的间隔设置为100毫秒,这样很快就能清楚屏幕上的手势了,注意:在清除后我们还要把时间间隔设置为3600000毫秒或者是你想要的时间间隔,这样才能确保下次执行会是3600000毫秒的时间间隔.
Java类中的代码
mGestureOverlayView.addOnGestureListener(new OnGestureListener()
{
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
public void onGestureCancelled(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
}
public void onGestureEnded(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
mGesture = overlay.getGesture();
if(mGesture!=null)
{
mButton1.setEnabled(true);
}
}
public void onGestureStarted(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
mButton1.setEnabled(false);
mGesture = null;
}
}
//保存为图片的代码
mButton1.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
Bitmap bitmap = mGesture.toBitmap(480, 750, 12, Color.RED);
//mImageView.setImageBitmap(bitmap);
File f = new File("/sdcard/00000.png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(f);
bitmap.compress(Bitmap.CompressFormat.PNG, 50, fos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//清除的代码
mButton2.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
mGestureOverlayView.setFadeOffset(10);//清除前设置时间间隔缩小
mGestureOverlayView.clear(true);
mGestureOverlayView.setFadeOffset(3600000);//清楚后恢复时间间隔
mButton1.setEnabled(false);
}
}
前段时间做了个事业单位稽查的项目,客户要求系统支持现场电子签名,由于做android没多久,这个问题缠绕了我很长时间,现在终于完美解决这个问题了,现在把关键代码贡献给大家.
此代码关键的位置就在类中的最后面清除的代码,我看到论坛里很多人询问关于多笔画的问题,关于手势多笔画总是要在很短时间内输入,而不可以相隔很长时间,这是我们要在xml中的GestureOverlayView 中加入android:fadeOffset=”3600000” 这段代码,这断代码的含义就是使多笔画每两次的间隔时间延长,3600000是代表毫秒,也就是说这里我让每两次笔画的时间间隔延长了一小时.
当添加的上面的代码以后,可以解决笔画的间隔问题,但是相应的clear()清除方法的时间也会变为3600000毫秒,这个很显然是不可行的,所以我们要在清除前加入mGestureOverlayView.setFadeOffset(100);
这段代码的意思就是把每次多笔画的间隔设置为100毫秒,这样很快就能清楚屏幕上的手势了,注意:在清除后我们还要把时间间隔设置为3600000毫秒或者是你想要的时间间隔,这样才能确保下次执行会是3600000毫秒的时间间隔.
Java类中的代码
mGestureOverlayView.addOnGestureListener(new OnGestureListener()
{
public void onGesture(GestureOverlayView overlay, MotionEvent event) {
// TODO Auto-generated method stub
}
public void onGestureCancelled(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
}
public void onGestureEnded(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
mGesture = overlay.getGesture();
if(mGesture!=null)
{
mButton1.setEnabled(true);
}
}
public void onGestureStarted(GestureOverlayView overlay,
MotionEvent event) {
// TODO Auto-generated method stub
mButton1.setEnabled(false);
mGesture = null;
}
}
//保存为图片的代码
mButton1.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
Bitmap bitmap = mGesture.toBitmap(480, 750, 12, Color.RED);
//mImageView.setImageBitmap(bitmap);
File f = new File("/sdcard/00000.png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(f);
bitmap.compress(Bitmap.CompressFormat.PNG, 50, fos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//清除的代码
mButton2.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
// TODO Auto-generated method stub
mGestureOverlayView.setFadeOffset(10);//清除前设置时间间隔缩小
mGestureOverlayView.clear(true);
mGestureOverlayView.setFadeOffset(3600000);//清楚后恢复时间间隔
mButton1.setEnabled(false);
}
}
相关文章推荐
- Android手势识别GestureOverlayView手势自动消除和多笔画识别问题
- 关于GestureOverlayView多笔画时间的问题
- Android关于含有SurfaceView的View会导致其他空间出问题的解决方案
- Android手势源码浅析-----手势绘制(GestureOverlayView)
- Android 手势识别控件 GestureOverlayView
- 开发笔记:解决安卓GestureOverlayView手势和ListView点击事件、文本框获取焦点冲突的问题
- 关于android 端,人人网以及新浪网 webview 页面缓存问题
- [Android] 关于WebView的内存泄露问题
- 关于android软键盘弹出挤压VIEW和覆盖View的问题
- 关于android webview 设置cookie的问题
- Android--GestureOverlayView,手势识别
- Android手势之GestureOverlayView
- 关于 android 中的MapView 双击事件的问题?
- android 关于TextView getLineCount() 获得的值始终为0问题
- 关于android text view 加载第三方字库导致内存泄漏问题
- 关于Android VideoView导致的内存泄漏的问题
- 关于Android之WebView加载网页缓存和清除问题
- 关于Android View与Drawable的问题
- Android GestureOverlayView详解
- 关于android 设置TextView可点击出现覆盖的问题