編輯:關於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();
}
}
}
讀者還可以在該實例的基礎上完善各種事件的響應處理函數,使其功能更加豐富。
想要好信號 Android手機網絡自己設置
很多Android系統手機都或多或少出現過信號不穩的問題,其實很多時候不是手機自身的質量不佳,而是我們沒有對其進行合理的網絡配置。以聯通WCDMA制式的An
FrameLayout和Fragment處理Android應用UI布局實例
將Fragment與Layout結合使用,一般都是主Activity以frame填充Activity的方式交互管理Fragment :1.由於用到getSupportFr
Android提供的系統服務之--AlarmManager(鬧鐘服務)
本節引言: 本節主要介紹的是Android系統服務中的---AlarmManager(鬧鐘服務), 除了開發手機鬧鐘外,更多的時候是作為一個全
Android XUtils3框架的基本使用方法(二)
上一篇Android中XUtils3框架使用方法詳解(一)文章,主要介紹了XUtil3的注解模塊,網絡模塊,圖片加載模塊,今天給大家帶來數據庫模塊的講解,現在主流的ORM