我对Android很新,我正在尝试构建一个应用程序,用户可以在其中绘制一个字母,按下连接读取它的服务的按钮,然后将字母显示回来。
这是我的主要布局: !(http://i58.photobucket.com/albums/g271/billmoney3/layout_zps71eb45ca.jpg)
我希望用户能够在蓝色区域中绘图。我将蓝色区域设为一个名为InnerDrawingView的自定义视图。我需要有关如何组织视图和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类中添加了什么样的触摸侦听器?我可以从我的主要活动的onTouch()中调用:innerView.onTouch()吗?还是onDraw()方法?如果有人能指导我做一个很好的油漆教程,那对我有很大的帮助。
感谢您的投入。
答案 0 :(得分:1)
您需要从“event”对象中拉出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 - 多指数-touch事件点)。
您需要实施点/段/的绘制吗?在InnerDrawingView中列出。
P.S。不要忘记让你的字段私有;)