当前位置: 首页 > 知识库问答 >
问题:

在android中如何在imageview上画线

端木涵润
2023-03-14

在我的应用程序中,我想在ImageView上画一条线。当我触摸它时,我想用手指写一条线。这是我的要求。为此,我谷歌了很多次,并休耕了贝娄链接:

如何在Android上的ImageView中画一条线?。

在我的活动中,我创建了MyImageView类的对象,在我的OnTouchListener中重写了onTouch()方法,在MotionEvent.action_down:switch case中,我编写了update()方法。我得到了这个错误:“new View.OnTouchListener(){}类型的方法update()是未定义的”。所以请任何人建议我如何这样做。谢谢您的帮助。

这是我的代码:imageView.setonTouchListener(new view.onTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub

ImageView view = (ImageView) v;
view.setScaleType(ImageView.ScaleType.MATRIX);
float scale;

switch (event.getAction() & MotionEvent.ACTION_MASK) 
{
case MotionEvent.ACTION_DOWN:   // first finger down only
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
og.d(TAG, "mode=DRAG"); // write to LogCat
mode1 = DRAG1;
if(checkPencil){
//update();
}
break;

case MotionEvent.ACTION_UP: // first finger lifted

case MotionEvent.ACTION_POINTER_UP: // second finger lifted

mode1 = NONE1;
Log.d(TAG, "mode1=NONE1");
break;
case MotionEvent.ACTION_MOVE:
if (mode1 == DRAG1) 
{ 
if(check){                                                                                                                                   matrix.set(savedMatrix);                                                             matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); // create the   transformation in the matrix  of points
}
} 
else if (mode1 == ZOOM1) 
{ 
if(check){
Log.e("if elseeeeeee","dfgrtgytey");
// pinch zooming
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 5f) 
{
                                                             matrix.set(savedMatrix);
scale = newDist / oldDist; // setting the scaling of the
                                                                                          // matrix...if scale > 1 means
                                                                                        // zoom in...if scale < 1 means
                                                                                        // zoom out
                                                                matrix.postScale(scale, scale, mid.x, mid.y);

}
// its for rotation..
if (lastEvent!=null){
newRot = rotation(event); 
//if (Constant.TRACE) Log.d("Degreeeeeeeeeee", "newRot="+(newRot));
float r = newRot-d;                                                               matrix.postRotate(r, view.getMeasuredWidth()/2, view.getMeasuredHeight()/2);  
}
}
}
break;
//rotation..
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {                                                          savedMatrix.set(matrix);
midPoint(mid, event);
mode1 = ZOOM1;
Log.d(TAG, "mode=ZOOM")
}
lastEvent = new float[4];
lastEvent[0] = event.getX(0);
lastEvent[1] = event.getX(1);
lastEvent[2] = event.getY(0);
lastEvent[3] = event.getY(1);
d = rotation(event);
break;

}//switch

view.setImageMatrix(matrix); // display the transformation on screen

return true; // indicate event was handled

}
});

在我的应用程序中,拖动图像、旋转图像和缩放图像一切都正常工作。我的要求是当我单击按钮时,绘图功能将正常工作。这就是我在此块中编写更新方法的原因:“If(checkPencil){//update();}。但它不工作。

共有1个答案

云捷
2023-03-14
Canvas c = null;
c = mSurfaceHolder.lockCanvas();
imageview.line(canvas);

mSurfaceHolder.unlockCanvasAndPost(c);

public void line(Canvas draw){
// set the layout parameters
// get the background image as ImageView
// Use the gesture Overlay concept. 
}
 类似资料:
  • 问题内容: 嗨,我一直试图在Imageview上写数字。用于N个问题的图像。如果用户输入的答案是正确的,则应显示带有问号的问题编号和带有错误标记图像的问题编号。我需要在图像上写下问题编号。我的代码在这里: 我收到此警告: 图片在运行时不显示。我究竟做错了什么? 问题答案: 我认为最简单的解决方法是不覆盖任何内容,而是使用资源设置其背景。 例如:

  • 我想将图标设置为,我从这个网站下载了图标:FlatIcon 现在我想设置此图标的颜色,但当使用时,只需为背景添加颜色,而不是设置为图标! 当使用时,我可以用此代码设置图标的颜色:。 如何将图标的颜色设置为,例如?谢谢大家

  • 问题内容: 我有一个JSON URL :: JSON STRUCT :: RestaurantDescPhotos.java RestaurantDescPhotos.xml ImageLoader.java 我在XML中有一个imageview 如何设置JSONURL的图像视图 我已经编码了该类的某些部分,但是试图知道如何设置imageview 有任何想法吗 问题答案: 您可以使用ImageLo

  • 我正在开发一个有两个活动的应用程序,Main和Info。应用程序以MainActivity启动,当您单击按钮时,InfoActivity从右侧滑入。当您单击另一个按钮时,InfoActivity将再次滑出到右侧,Main将返回。 以下是我在MainActivity中实现动画和按钮单击的方式: 我在InfoActivity中也做了类似的工作,效果很好。但是,我希望并且需要调用finish()而不是s

  • 实际上,我有一个,它是(在和),现在我需要创建另一个(在该的下方),一开始必须不可见。 当我的活动运行时,我想对隐藏的布局进行动画处理。 隐藏的必须自下而上。我不知道如何实现这个动画??我不知道如何创建一个最初不可见的布局,经过一段时间的延迟后,它必须从屏幕下方显示并从侧面显示??? 这是我的xml文件代码

  • 我正在使用新的API(Google Map API V2)为我的android应用程序,我已经创建了地图并添加了标记,现在我的任务是手动创建一个围绕任何标记的圆,我还想为用户提供一个功能,他可以相应地增加该圆的半径,为此我给出了一个条,当用户增加该条时,圆的半径将增加,反之亦然。 如果有人知道如何使用GoogleMapAPIV2来完成此操作,请提供帮助,