`
龙哥IT
  • 浏览: 254085 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

按钮在Activity屏幕中拖动,定位

 
阅读更多
private ImageView img1;
	private int screenWidth;
	private int screenHeight;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		img1 = (ImageView) findViewById(R.id.imageView1);

		DisplayMetrics dm = getResources().getDisplayMetrics();
		screenWidth = dm.widthPixels;
		screenHeight = dm.heightPixels - 50;

		img1.setOnTouchListener(movingEventListener);
		img1.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				System.out.println(333333);
				Toast.makeText(RemoveImageActivity.this, "点击咯", Toast.LENGTH_SHORT).show();
			}
		});
	}

	private OnTouchListener movingEventListener = new OnTouchListener() {
		int lastX, lastY;

		public boolean onTouch(View v, MotionEvent event) {
			if (event.getAction() == event.ACTION_DOWN) {
				lastX = (int) event.getRawX();
				lastY = (int) event.getRawY();
				System.out.println(11111);
			}
			if (event.getAction() == event.ACTION_MOVE) {
				System.out.println(222222);
				int dx = (int) event.getRawX() - lastX;
				int dy = (int) event.getRawY() - lastY;

				int left = v.getLeft() + dx;
				int top = v.getTop() + dy;
				int right = v.getRight() + dx;
				int bottom = v.getBottom() + dy;
				// 设置不能出界
				if (left < 0) {
					left = 0;
					right = left + v.getWidth();
				}

				if (right > screenWidth) {
					right = screenWidth;
					left = right - v.getWidth();
				}

				if (top < 0) {
					top = 0;
					bottom = top + v.getHeight();
				}

				if (bottom > screenHeight) {
					bottom = screenHeight;
					top = bottom - v.getHeight();
				}

				v.layout(left, top, right, bottom);

				lastX = (int) event.getRawX();
				lastY = (int) event.getRawY();

			}
			return true;
		}
	};

 

如何返回值為TRUE,那麼,如果按鈕还有点击事件的话,点击事件失效了(监听不到);

如果返回值为FALSE。那么,拖动事件完毕之后,立即就执行了点击事件

 

 

 

分享到:
评论

相关推荐

    在android Activity中实现图片的拖动.doc

    在Android Activity中实现图片的拖动是一项常见的交互设计任务,主要涉及到对图像视图(ImageView)的操作以及动画的使用。以下是一份详细的步骤说明: 1. **使用ImageView展示图片** 首先,我们需要在XML布局文件...

    android 百度地图滑动获屏幕中心坐标和显示当前地址信息

    接着,我们需要在布局文件(如activity_main.xml)中添加百度地图的MapView组件: ```xml android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:...

    android的拖动效果

    为了更好地理解如何在Android应用中实现拖动效果,我们可以通过以下代码示例来进行分析: ```java package com.roiding.sample; import android.app.Activity; import android.os.Bundle; import android.util.Log...

    meidaplayer+surfaceview 实现的 一个常用播放器,包括大小屏切换,底部进度条,播放控制,屏幕旋转

    `OnSeekCompleteListener`在用户拖动`SeekBar`后完成定位时触发,`OnBufferingUpdateListener`则用于获取缓冲进度,以反映加载状态。 播放控制通常包括播放、暂停、停止和快进/快退功能。这些操作可以通过设置按钮...

    百度地图源码

    在地图应用中,可能有一个XML布局文件用于放置地图视图,并可能包含其他UI元素,如按钮、文本视图等。 **Activity**是Android应用的基本组件,它代表了用户可见的屏幕。在源码中,可能有一个或多个Activity负责展示...

    安卓Android源码——个人消费记录软件-拖控件作品.zip

    6. **拖动控件Drag and Drop**:项目的特色是拖动控件功能,Android提供了一套拖放API,允许用户直接在屏幕上拖动UI元素。这通常涉及到`OnTouchListener`和`View.OnDragListener`的实现,以及`ClipData`的使用。 7....

    Android开发技巧合集.doc

    如果希望横竖屏切换时不销毁Activity,可以在AndroidManifest.xml中对Activity设置相应的属性。 ```xml &lt;activity android:name=".MyActivity" android:configChanges="orientation|screenSize"&gt; &lt;/activity&gt; ``` ...

    Android移动开发例子

    4. **活动(Activity)管理**:在Android应用中,每个屏幕通常对应一个Activity。在Sudoku游戏中,你可能需要多个Activity来处理游戏的不同阶段,如主菜单、游戏界面、帮助页面等。学习如何在Activity之间进行跳转和...

    android笔记

    例如,在一个手机应用中,每一个单独的“屏幕”都由一个Activity来实现。当用户在不同屏幕之间导航时,实际上是通过启动不同的Activity来实现的。 #### 布局管理器 布局管理器是用于组织UI组件的一种容器,它们控制...

    android_UI布局设计

    XML布局文件在运行时被解析成相应的GUI类,并在Activity的onCreate事件处理函数中通过setContentView方法加载到屏幕上。 在Android开发中,Activity是展示应用程序UI的基本单元。它通过XML文件定义其界面,例如res/...

    android安卓笔记

    - **申请添加Activity**:要在`AndroidManifest.xml`中注册一个新的`Activity`,需要在`&lt;application&gt;`标签内添加一个`&lt;activity&gt;`标签,并设置相应的属性(如`android:name`)。 - **申请添加permission**:为了...

    Android入门

    - 在`&lt;activity&gt;`标签中添加`&lt;intent-filter&gt;`来指定Action和Category。 6. **启动Activity** - 使用`Intent`对象启动一个新的Activity。 - 调用`startActivity()`方法完成跳转。 7. **启动Activity并返回结果*...

    移动应用开发app拼图游戏

    1. **活动(Activity)**:在Android应用中,每个用户可见的屏幕就是一个活动。拼图游戏可能由一个或多个活动构成,每个活动负责显示游戏的不同阶段,如游戏主菜单、游戏进行中、游戏结束等。 2. **布局(Layout)*...

    马托斯的教程总结

    此外,还提到了SlidingDrawer组件,它允许内容在屏幕外缓存,用户可以通过拖动把手来显示或隐藏内容。SlidingDrawer的内容可以是任何类型的视图,如GridView。至于Input Method Framework (IMF),它处理软硬件键盘的...

    安卓复读软件 源码

    - **Activity与Fragment**:在Android应用中,Activity是用户界面的基本单元,而Fragment则可以用来构建模块化的界面,便于复用和适应不同屏幕尺寸。复读软件可能包含多个页面,比如主播放界面、设置界面等,这些...

    Android典型技术模块开发详解

    6.5.2 获取屏幕分辨率 6.5.3 剪贴板服务 6.5.4 电话服务 6.5.5 定时提醒服务 6.5.6 音频服务 6.5.7 传感器服务 6.5.8 位置服务 6.6 本章小结 第三篇 Android开发基础详解 第7章 常用控件 7.1 Button(按钮) 7.2 ...

    android UI布局

    例如,DroidDraw是一款免费的在线工具,允许开发者在可视化界面中拖拽构件,然后生成对应的XML代码。 #### 六、总结 本文从基础入手,介绍了Android UI布局的概念和技术,包括Activity与UI的关系、View和ViewGroup...

Global site tag (gtag.js) - Google Analytics