Android觸屏測(cè)試實(shí)例代碼
本文實(shí)例詳細(xì)描述了Android觸屏測(cè)試代碼,可實(shí)現(xiàn)對(duì)觸屏的點(diǎn)擊、移動(dòng)、離開(kāi)等事件的處理,對(duì)于Android初學(xué)者有很好的借鑒價(jià)值。
具體功能代碼如下:
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;
/*聲明相關(guān)變量作為存儲(chǔ)圖片寬高,位置使用*/
private int intWidth, intHeight, intDefaultX, intDefaultY;
private float mX, mY;
/*聲明存儲(chǔ)屏幕的分辨率變量 */
private int intScreenX, intScreenY;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 取得屏幕對(duì)象 */
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
/* 取得屏幕解析像素 */
intScreenX = dm.widthPixels;
intScreenY = dm.heightPixels;
/* 設(shè)置圖片的寬高 */
intWidth = 100;
intHeight = 100;
/*通過(guò)findViewById構(gòu)造器創(chuàng)建ImageView對(duì)象*/
mImageView01 =(ImageView) findViewById(R.id.myImageView1);
/*將圖片從Drawable賦值給ImageView來(lái)呈現(xiàn)*/
mImageView01.setImageResource(R.drawable.baby);
/* 初始化按鈕位置居中 */
RestoreButton();
/* 當(dāng)點(diǎn)擊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())
{
/*點(diǎn)擊屏幕*/
case MotionEvent.ACTION_DOWN:
picMove(x, y);
break;
/*移動(dòng)位置*/
case MotionEvent.ACTION_MOVE:
picMove(x, y);
break;
/*離開(kāi)屏幕*/
case MotionEvent.ACTION_UP:
picMove(x, y);
break;
}
}catch(Exception e)
{
e.printStackTrace();
}
return true;
}
/*移動(dòng)圖片的方法*/
private void picMove(float x, float y)
{
/*默認(rèn)微調(diào)圖片與指針的相對(duì)位置*/
mX=x-(intWidth/2);
mY=y-(intHeight/2);
/*防圖片超過(guò)屏幕的相關(guān)處理*/
/*防止屏幕向右超過(guò)屏幕*/
if((mX+intWidth)>intScreenX)
{
mX = intScreenX-intWidth;
}
/*防止屏幕向左超過(guò)屏幕*/
else if(mX<0)
{
mX = 0;
}
/*防止屏幕向下超過(guò)屏幕*/
else if ((mY+intHeight)>intScreenY)
{
mY=intScreenY-intHeight;
}
/*防止屏幕向上超過(guò)屏幕*/
else if (mY<0)
{
mY = 0;
}
/*通過(guò)log 來(lái)查看圖片位置*/
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還原位置坐標(biāo)*/
mMakeTextToast
(
"("+
Integer.toString(intDefaultX)+
","+
Integer.toString(intDefaultY)+")",true
);
/* 以setLayoutParams方法,重新安排Layout上的位置 */
mImageView01.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intDefaultX,intDefaultY)
);
}
/*自定義一發(fā)出信息的方法*/
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();
}
}
}
讀者還可以在該實(shí)例的基礎(chǔ)上完善各種事件的響應(yīng)處理函數(shù),使其功能更加豐富。
相關(guān)文章
Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例的相關(guān)資料,一種是通過(guò)Bundle來(lái)獲取壓縮過(guò)的照片,一種是通過(guò)SD卡獲取的原圖,需要的朋友可以參考下2016-11-11
Android中使用TextView實(shí)現(xiàn)高仿京東淘寶各種倒計(jì)時(shí)效果
今天給大家?guī)?lái)的是僅僅使用一個(gè)TextView實(shí)現(xiàn)一個(gè)高仿京東、淘寶、唯品會(huì)等各種電商APP的活動(dòng)倒計(jì)時(shí)。今天小編把實(shí)現(xiàn)代碼分享到腳本之家平臺(tái),對(duì)android textclock 倒計(jì)時(shí)效果感興趣的朋友參考下吧2016-10-10
實(shí)例講解Android應(yīng)用中自定義組合控件的方法
這篇文章主要介紹了實(shí)例講解Android應(yīng)用中自定義組合控件的方法,通過(guò)例子講解了view組合控件及自定義屬性的用法,需要的朋友可以參考下2016-04-04
Android編程中Perferences的用法實(shí)例分析
這篇文章主要介紹了Android編程中Perferences的用法,以實(shí)例形式較為詳細(xì)的分析了配置文件preferences.xml的功能、定義及使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Android系統(tǒng)檢測(cè)程序內(nèi)存占用各種方法
這篇文章主要介紹了Android系統(tǒng)檢測(cè)程序內(nèi)存占用各種方法,本文講解了檢查系統(tǒng)總內(nèi)存、檢查某個(gè)程序的各類型內(nèi)存占用、檢查程序狀態(tài)、檢查程序各部分的內(nèi)存占用等內(nèi)容,需要的朋友可以參考下2015-03-03
TextView使用SpannableString設(shè)置復(fù)合文本 SpannableString實(shí)現(xiàn)TextView的鏈接
這篇文章主要為大家詳細(xì)介紹了如何利用SpannableString實(shí)現(xiàn)TextView的鏈接效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
Android ListView萬(wàn)能適配器實(shí)例代碼
本文主要介紹Android ListView萬(wàn)能適配器,這里整理了詳細(xì)的資料及實(shí)現(xiàn)代碼,以及實(shí)現(xiàn)效果圖,有需要的小伙伴可以參考下2016-09-09

