TextView是没有双击事件的监听设置的,故我们这里使用的是setOnTouchListener来作为双击监听。
监听的类需要实现OnTouchListener类,并重写OnTouch方法
下面是实例:
public class HosIntroActivity extends MyActivity implements OnTouchListener { private static long size = 12; //字体大小 private int count = 0; private int firClick = 0; private int secClick = 0; private int flage = 0; private TextView infor; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.info_introduction); infor = (TextView) findViewById(R.id.text_infor);
try {
infor.setText(Reader.readText(this)); } catch (Exception e) { Toast.makeText(this, "读取文件失败", Toast.LENGTH_LONG).show(); e.printStackTrace(); } // float zoomScale = 0.5f;// 缩放比例 // new ZoomTextView(infor, zoomScale); infor.setOnTouchListener(this); }
public boolean onTouch(View v, MotionEvent event) { if (MotionEvent.ACTION_DOWN == event.getAction()) { count++; if (count == 1) { firClick = (int) System.currentTimeMillis(); } else if (count == 2) { secClick = (int) System.currentTimeMillis(); switch (flage) { case 0: if (secClick - firClick < 1000) {// 双击事件 size = size + 5; infor.setTextSize(size); flage++; } count = 0; firClick = 0; secClick = 0; return true; case 1: if (secClick - firClick < 1000) {// 双击事件 size = size - 5; infor.setTextSize(size); flage--; } count = 0; firClick = 0; secClick = 0; return true; default: return true; } } } return true; } }
参考中其实给出了两种方式
public class MainActivity extends Activity{ //implements OnGestureListener{ private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.btn_hello); button.setOnTouchListener(new onDoubleClick()); } class onDoubleClick implements View.OnTouchListener{ int count = 0; int firClick = 0; int secClick = 0; @Override public boolean onTouch(View v, MotionEvent event) { if(MotionEvent.ACTION_DOWN == event.getAction()){ count++; if(count == 1){ firClick = (int) System.currentTimeMillis(); } else if (count == 2){ secClick = (int) System.currentTimeMillis(); if(secClick - firClick < 1000){ //双击事件 button.setText("wff"); } count = 0; firClick = 0; secClick = 0; } } return true; } } }