MainActivity:
package com.example.touchscreentest;import android.os.Bundle;import android.R.layout;import android.app.Activity;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.LinearLayout;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //得到线性布局的容器 LinearLayout linearLayout=(LinearLayout)findViewById(R.id.a); //创建出自定义的View final MyView myView=new MyView(this); //设置自定义组建的最大宽度和最大高度 myView.setMinimumHeight(300); myView.setMinimumWidth(300); myView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub //设置位置 myView.current_x=(int)event.getX(); myView.current_y=(int)event.getY(); //设置位置之后开始重新画 myView.invalidate(); //返回true则表明已经处理了本事件 return true; } }); linearLayout.addView(myView); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
MyView:
package com.example.touchscreentest;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View;public class MyView extends View { protected int current_x; protected int current_y; public MyView(Context context) { super(context); // TODO Auto-generated constructor stub } //重画时调用 @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); Paint p=new Paint(); p.setColor(Color.RED); canvas.drawCircle(current_x, current_y, 10, p); }}
执行效果图:
images/loading.gif' data-original="http://images2015.cnblogs.com/blog/824924/201512/824924-20151231112741057-1513969278.gif" />
原标题:TouchScreenTest
关键词: