关键

 package com.example.administrator.mystudent.ButtonMove;

 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.Button;
import android.widget.Toast; import com.example.administrator.mystudent.R; public class ButtonMoveActivity extends Activity { private Button btn1;
private int screenWidth;
private int screenHeight; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_move); //DisplayMetrics取屏幕大小分辨率
DisplayMetrics dm=getResources().getDisplayMetrics();
screenWidth=dm.widthPixels;
screenHeight=dm.heightPixels-50; btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnTouchListener(new MyOnTouchListener()); } class MyOnTouchListener implements View.OnTouchListener {
int lastX,lastY; @Override
public boolean onTouch(View v, MotionEvent event) {
int ea=event.getAction();
Log.i("TAG", "Touch:"+ea); switch(ea){
case MotionEvent.ACTION_DOWN: lastX=(int)event.getRawX();//获取触摸事件触摸位置的原始X坐标
lastY=(int)event.getRawY();
break; case MotionEvent.ACTION_MOVE:
int dx=(int)event.getRawX()-lastX;
int dy=(int)event.getRawY()-lastY; int l=v.getLeft()+dx;
int b=v.getBottom()+dy;
int r=v.getRight()+dx;
int t=v.getTop()+dy; //下面判断移动是否超出屏幕
if(l<0){
l=0;
r=l+v.getWidth();
} if(t<0){
t=0;
b=t+v.getHeight();
} if(r>screenWidth){
r=screenWidth;
l=r-v.getWidth();
} if(b>screenHeight){
b=screenHeight;
t=b-v.getHeight();
}
v.layout(l, t, r, b); lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
Toast.makeText(getApplicationContext(),
"当前位置:"+l+","+t+","+r+","+b,
Toast.LENGTH_SHORT).show(); //利用invalidate()刷新界面(加post多线程)
v.postInvalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
} }

Android可移动的Button的更多相关文章

  1. 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题

    解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题http ...

  2. Android控件之Button(按钮控件)和ImageButton(图片按钮控件)

    一.Button和ImageButton特证: 1.共同特证: 都可以作为一个按钮产生点击事件 2.不同特证: Button有text的属性,ImageButton没有 ImageButton有src ...

  3. android:TextAppearance.Material.Widget.Button.Inverse找不到或者报错问题

    前两天将android sdk升到android6.0后出现Error retrieving parent for Item - AppCompact-v7 23 或者无法解析 android:Tex ...

  4. Android开发系列之button事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activit ...

  5. android:TextAppearance.Material.Widget.Button.Inverse问题

    如果在刚够构建Android Studio项目的时候,运行发现,出现没找到资源的错误!找不到com.android.support/appcompat-v7/23.0.1/res/values-v23 ...

  6. Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题

    1.下面是不生效的布局: selector_btn_red.xml: <?xml version="1.0" encoding="utf-8"?> ...

  7. Android:后台给button绑定onClick事件、当返回项目到手机页面时提示是否退出APP

    上一篇文章我们学习了android通过findViewById的方式查找控件,本章将了解button控件,及btton如何绑定控件. 通过android的ui设计工具设计一个登录页面: <Rel ...

  8. Android 更改按钮样式 Button Styles

    extends:http://stackoverflow.com/questions/26346727/android-material-design-button-styles   I will a ...

  9. Android怎样设置圆角button

    1. 在res文件夹下的drawable文件夹下新建shape.xml文件 <?xml version="1.0" encoding="utf-8"?&g ...

  10. Android实例1:button点击响应

    个人网站http://www.ravedonut.com/ Layout xml文件 <RelativeLayout android:layout_width="wrap_conten ...

随机推荐

  1. Spring使用Setter依赖注入

    一个简单的Spring例子来展示如何通过setter方法注入依赖项,最常用DI方法注入bean. 1. IOutputGenerator 接口和实现类   package faj.test.javad ...

  2. 第30章 ADC—电压采集—零死角玩转STM32-F429系列

    第30章     ADC—电压采集 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  3. BeanUtils工具的实现

    BeanUtils工具的实现 自定义一个将数据映射到类里的方法 方法一: package utils; import java.lang.reflect.Field; import java.lang ...

  4. spring-bean(全生命周期)

    作用:在初始化和销毁bean时候,做一些处理工作是调用生命周期方法 格式: <bean id=”该生命周期的名称” class=”提供方法的类的全路径” init-methood=”init” ...

  5. Orcale(一)

    oracle数据库基本语句查询 ORacle-12560:TNS 协议配置器错误 1.服务:1.监听服务未开启 2.服务器未开启 3.环境变量:Oracle_sid = orcl 4.regedit注 ...

  6. IBM Rational Software Architect V9.0安装图解

    IBM Rational Software Architect(RSA) -- IBM软件开发平台的一部分 – 是IBM在2003年二月并购Rational以来,首次发布的Rational产品.改进过 ...

  7. html ajax请求 php 下拉 加载更多数据 (也可点击按钮加载更多)

    <input type="hidden" class="total_num" id="total" value="{$tot ...

  8. 在CentOS VPS上通过SSH安装 MySQL

    输入 yum install mysql-server 按Y继续 安装完成,设置开机启动Mysql,输入 chkconfig --levels 235 mysqld on 然后启动tomcat,输入s ...

  9. 手机连上同一个局域网的PC,修改项目的vhost配置

    <VirtualHost 172.16.6.100:80> DocumentRoot "D:\phpStudy\WWW\mywork\many_school" Serv ...

  10. 基于itchat定制聊天机器人

    #coding=utf8import requestsimport itchat #key自己到图灵注册一个 KEY = '************************************** ...