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自定義帶增長(zhǎng)動(dòng)畫和點(diǎn)擊彈窗提示效果的柱狀圖DEMO
這篇文章主要介紹了Android自定義帶增長(zhǎng)動(dòng)畫和點(diǎn)擊彈窗提示效果的柱狀圖的相關(guān)資料,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
Android自定義View 實(shí)現(xiàn)水波紋動(dòng)畫引導(dǎo)效果
在android程序開(kāi)發(fā)中,我們經(jīng)常簡(jiǎn)單通過(guò)自定義view實(shí)現(xiàn)水波紋動(dòng)畫引導(dǎo)功能,下面通過(guò)本文給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下2017-01-01
Android開(kāi)發(fā)之Sqliteopenhelper用法實(shí)例分析
這篇文章主要介紹了Android開(kāi)發(fā)之Sqliteopenhelper用法,實(shí)例分析了SQLiteOpenHelper類操作數(shù)據(jù)庫(kù)的相關(guān)技巧,需要的朋友可以參考下2015-05-05
Flutter Http網(wǎng)絡(luò)請(qǐng)求實(shí)現(xiàn)詳解
這篇文章主要介紹了Flutter Http網(wǎng)絡(luò)請(qǐng)求實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Android實(shí)現(xiàn)支持所有View的通用的下拉刷新控件
這篇文章主要介紹了Android實(shí)現(xiàn)支持所有View的通用的下拉刷新控件的相關(guān)資料,需要的朋友可以參考下2016-06-06
Android 通知使用權(quán)(NotificationListenerService)的使用
這篇文章主要介紹了Android 通知使用權(quán)(NotificationListenerService)的使用的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android WebView通過(guò)動(dòng)態(tài)的修改js去攔截post請(qǐng)求參數(shù)實(shí)例
這篇文章主要介紹了Android WebView通過(guò)動(dòng)態(tài)的修改js去攔截post請(qǐng)求參數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
Android軟鍵盤顯示模式及打開(kāi)和關(guān)閉方式(推薦)
這篇文章主要介紹了Android軟鍵盤顯示模式及打開(kāi)和關(guān)閉方式(推薦),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Android控件系列之相冊(cè)Gallery&Adapter適配器入門&控件縮放動(dòng)畫入門
本文介紹了如何使用Gallery打造簡(jiǎn)單的相冊(cè),并實(shí)現(xiàn)了與用戶點(diǎn)擊的互動(dòng)動(dòng)畫,并介紹了適配器的原理。您可以在此基礎(chǔ)上修改,實(shí)現(xiàn)自己的相冊(cè),嵌入到任何程序中都會(huì)增色不少2012-11-11

