我对 Android 还很陌生,正在尝试构建一个应用程序,用户可以在其中绘制字母,按下连接读取该字母的服务的按钮,然后将字母显示回给他们。
这是我的主要布局: !(http://i58.photobucket.com/albums/g271/billmoney3/layout_zps71eb45ca.jpg)
我希望用户能够在蓝色区域绘图。我将蓝色区域设为一个名为 InnerDrawingView 的自定义 View 。我需要有关如何组织 View 和 OnTouchListener 的帮助。
现在我有这个java代码:
public class DoodleActivity extends Activity {
Button confirmButton;
EditText drawingResult;
InnerDrawingView innerView;
// on create
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_doodle); // main layout
// where the drawing happens
innerView = (InnerDrawingView) findViewById(R.id.innerDrawingView1);
innerView.setOnTouchListener(handleTouch);
...
...
// handle the touching of the inner view
private OnTouchListener handleTouch = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
drawingResult.setText("O RLY?!"); // just a test
return true;
}
}; // end of class
这是正确的方法吗?我应该在 InnerDrawingView 类中放置什么样的触摸监听器?我可以从我的主要 Activity 的 onTouch() 内部调用:innerView.onTouch() 吗?或者 onDraw() 方法?如果有人可以指导我一个好的绘画教程,那会对我有很大帮助。
感谢您的意见。
最佳答案
您需要从“事件”对象中提取 x 和 y。然后代码就看你的需要了。您可以将新点与前一个点连接(以形成一段)或将其放入列表中。伪代码:
public boolean onTouch(View v, MotionEvent event) {
innerView.submitNewPoint(event.getX()), event.getY());
return true;
}
如果您想处理多点触摸事件,您需要检索点数( event.getPointerCount() )并使用 event.getX(i)/event.getY(i) 中的坐标执行某些操作(i - 多点触摸的索引) -触摸事件点)。
为什么你需要实现点/线段/的绘制? InnerDrawingView 中的列表。
附注不要忘记将您的字段设为私有(private);)
关于java - 如何在同一屏幕上拥有按钮和自定义绘画 View ?安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14700195/