Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android觸屏測試實例代碼

Android觸屏測試實例代碼

編輯:關於Android編程

本文實例詳細描述了Android觸屏測試代碼,可實現對觸屏的點擊、移動、離開等事件的處理,對於Android初學者有很好的借鑒價值。

具體功能代碼如下:

package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class TouchActivity extends Activity {
  /*聲明ImageView變量*/
  private ImageView mImageView01;
  /*聲明相關變量作為存儲圖片寬高,位置使用*/
  private int intWidth, intHeight, intDefaultX, intDefaultY;
  private float mX, mY; 
  /*聲明存儲屏幕的分辨率變量 */
  private int intScreenX, intScreenY;
  public void onCreate(Bundle savedInstanceState)
  {
   super.onCreate(savedInstanceState); 
   setContentView(R.layout.main);
   
   /* 取得屏幕對象 */
   DisplayMetrics dm = new DisplayMetrics(); 
   getWindowManager().getDefaultDisplay().getMetrics(dm);
   
   /* 取得屏幕解析像素 */
   intScreenX = dm.widthPixels;
   intScreenY = dm.heightPixels;
   
   /* 設置圖片的寬高 */
   intWidth = 100;
   intHeight = 100;
   /*通過findViewById構造器創建ImageView對象*/ 
   mImageView01 =(ImageView) findViewById(R.id.myImageView1);
   /*將圖片從Drawable賦值給ImageView來呈現*/
   mImageView01.setImageResource(R.drawable.baby);
   
   /* 初始化按鈕位置居中 */
   RestoreButton();
   
   /* 當點擊ImageView,還原初始位置 */
   mImageView01.setOnClickListener(new Button.OnClickListener()
   {
    @Override
    public void onClick(View v)
    {
     RestoreButton();
    }
   });
  }
  
  /*覆蓋觸控事件*/
  public boolean onTouchEvent(MotionEvent event) 
  {
   /*取得手指觸控屏幕的位置*/
   float x = event.getX();
   float y = event.getY();
   
   try
   {
    /*觸控事件的處理*/
    switch (event.getAction()) 
    {
     /*點擊屏幕*/
     case MotionEvent.ACTION_DOWN:
      picMove(x, y);
       break;
     /*移動位置*/
     case MotionEvent.ACTION_MOVE:
      picMove(x, y);
       break;
     /*離開屏幕*/
     case MotionEvent.ACTION_UP:
      picMove(x, y); 
       break;
    }
   }catch(Exception e)
    {
     e.printStackTrace();
    }
   return true;
  }
  /*移動圖片的方法*/
  private void picMove(float x, float y)
  {
   /*默認微調圖片與指針的相對位置*/
   mX=x-(intWidth/2);
   mY=y-(intHeight/2);
   
   /*防圖片超過屏幕的相關處理*/
   /*防止屏幕向右超過屏幕*/
   if((mX+intWidth)>intScreenX)
   {
    mX = intScreenX-intWidth;
   }
   /*防止屏幕向左超過屏幕*/
   else if(mX<0)
   {
    mX = 0;
   }
   /*防止屏幕向下超過屏幕*/
   else if ((mY+intHeight)>intScreenY)
   {
    mY=intScreenY-intHeight;
   }
   /*防止屏幕向上超過屏幕*/
   else if (mY<0)
   {
    mY = 0;
   }
   /*通過log 來查看圖片位置*/
   Log.i("jay", Float.toString(mX)+","+Float.toString(mY));
   /* 以setLayoutParams方法,重新安排Layout上的位置 */
   mImageView01.setLayoutParams
   (
    new AbsoluteLayout.LayoutParams
    (intWidth,intHeight,(int) mX,(int)mY)
   );
  }
  
  /* 還原ImageView位置的事件處理 */
  public void RestoreButton()
  {
   intDefaultX = ((intScreenX-intWidth)/2);
   intDefaultY = ((intScreenY-intHeight)/2);
   /*Toast還原位置坐標*/
   mMakeTextToast
   (
    "("+
    Integer.toString(intDefaultX)+
    ","+
    Integer.toString(intDefaultY)+")",true
   );
   
   /* 以setLayoutParams方法,重新安排Layout上的位置 */
   mImageView01.setLayoutParams
   (
    new AbsoluteLayout.LayoutParams
    (intWidth,intHeight,intDefaultX,intDefaultY)
   );
  }
  
  /*自定義一發出信息的方法*/
  public void mMakeTextToast(String str, boolean isLong)
  {
   if(isLong==true)
   {
    Toast.makeText(TouchActivity.this, str, Toast.LENGTH_LONG).show();
   }
   else
   {
    Toast.makeText(TouchActivity.this, str, Toast.LENGTH_SHORT).show();
   }
  }
}

讀者還可以在該實例的基礎上完善各種事件的響應處理函數,使其功能更加豐富。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved