当筵意气临九霄,星离雨散不终朝。这篇文章主要讲述Android可移动的Button相关的知识,希望能为你提供帮助。
【Android可移动的Button】关键
文章图片
1 package com.example.administrator.mystudent.ButtonMove; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.util.DisplayMetrics; 6 import android.util.Log; 7 import android.view.MotionEvent; 8 import android.view.View; 9 import android.widget.Button; 10 import android.widget.Toast; 11 12 import com.example.administrator.mystudent.R; 13 14 public class ButtonMoveActivity extends Activity { 15 16private Button btn1; 17private int screenWidth; 18private int screenHeight; 19 20@Override 21protected void onCreate(Bundle savedInstanceState) { 22super.onCreate(savedInstanceState); 23setContentView(R.layout.activity_button_move); 24 25//DisplayMetrics取屏幕大小分辨率 26DisplayMetrics dm=getResources().getDisplayMetrics(); 27screenWidth=dm.widthPixels; 28screenHeight=dm.heightPixels-50; 29 30btn1 = (Button) findViewById(R.id.btn1); 31btn1.setOnTouchListener(new MyOnTouchListener()); 32 33} 34 35class MyOnTouchListener implements View.OnTouchListener { 36int lastX,lastY; 37 38@Override 39public boolean onTouch(View v, MotionEvent event) { 40int ea=event.getAction(); 41Log.i("TAG", "Touch:"+ea); 42 43switch(ea){ 44case MotionEvent.ACTION_DOWN: 45 46lastX=(int)event.getRawX(); //获取触摸事件触摸位置的原始X坐标 47lastY=(int)event.getRawY(); 48break; 49 50case MotionEvent.ACTION_MOVE: 51int dx=(int)event.getRawX()-lastX; 52int dy=(int)event.getRawY()-lastY; 53 54int l=v.getLeft()+dx; 55int b=v.getBottom()+dy; 56int r=v.getRight()+dx; 57int t=v.getTop()+dy; 58 59//下面判断移动是否超出屏幕 60if(l< 0){ 61l=0; 62r=l+v.getWidth(); 63} 64 65if(t< 0){ 66t=0; 67b=t+v.getHeight(); 68} 69 70if(r> screenWidth){ 71r=screenWidth; 72l=r-v.getWidth(); 73} 74 75if(b> screenHeight){ 76b=screenHeight; 77t=b-v.getHeight(); 78} 79v.layout(l, t, r, b); 80 81lastX=(int)event.getRawX(); 82lastY=(int)event.getRawY(); 83Toast.makeText(getApplicationContext(), 84"当前位置:"+l+","+t+","+r+","+b, 85Toast.LENGTH_SHORT).show(); 86 87//利用invalidate()刷新界面(加post多线程) 88v.postInvalidate(); 89break; 90case MotionEvent.ACTION_UP: 91break; 92} 93return false; 94} 95} 96 97 }
推荐阅读
- 安卓开源项目周报0308
- Android studio 使用jni
- Android 中布局的优化措施都有哪些()
- 算法设计(负数的模数)
- 两个浮点数或double数的模数
- Scala Monads用法详细解读和指南
- Python MongoDB数据库开发详细解读
- MongoDB Update()方法用法示例介绍
- JavaScript typedArray.values()用法示例