package com.flys.floatbar;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.flys.floatbar.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class FloatBarActivity extends Activity implements OnTouchListener{
private GridView gv;
private ImageView iv;
private SimpleAdapter adapter;
private List <HashMap<String,Integer>>data;
DisplayMetrics dm ;
private int screenWidth;
private int screenHeight;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dm = getResources().getDisplayMetrics();
screenWidth = dm.widthPixels;
screenHeight = dm.heightPixels - 50;
gv = (GridView) this.findViewById(R.id.show_gv);
iv = (ImageView) this.findViewById(R.id.show_iv);
gv.setOnTouchListener(this);
gv.bringToFront();//将工具条GridView显示最前(要不然怎么叫浮动)
data = new ArrayList<HashMap<String,Integer>>();
HashMap<String,Integer> map = new HashMap<String,Integer>();
for(int i = 0; i < 3 ; i++){
map.put("image", R.drawable.ic_menu_manage);
data.add(map);
}
adapter = new SimpleAdapter(this, data, R.layout.item, new String[]{"image"}, new int[]{R.id.show_iv});
gv.setAdapter(adapter);
}
int lastX, lastY;
@Override
public boolean onTouch(View v, MotionEvent event) {
int ea = event.getAction();
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(FloatBarActivity.this,
"当前位置:" + l + "," + t + "," + r + "," + b,
Toast.LENGTH_SHORT).show();
v.postInvalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android 可拖动浮动工具条(菜单)Demo
共39个文件
class:13个
png:12个
xml:4个
4星 · 超过85%的资源 需积分: 50 391 下载量 183 浏览量
2012-03-20
17:14:41
上传
评论 5
收藏 122KB ZIP 举报
温馨提示
研究了一下午Android中可拖动浮动工具条的视线,主要思路是通过一个GridView绑定几个Item,通过Item点击事件可以实现具体操作。废话不多说上代码,过程全在Demo中
资源推荐
资源详情
资源评论
收起资源包目录
FloatBarDemo.zip (39个子文件)
FloatBarDemo
.project 848B
bin
FloatBarDemo.apk 30KB
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_menu_run_page.png 5KB
ic_launcher.png 4KB
ic_menu_manage.png 5KB
ic_menu_search.png 4KB
drawable-mdpi
ic_launcher.png 2KB
resources.ap_ 25KB
classes
org
avcon
floatbar
R$string.class 427B
R$layout.class 422B
R$drawable.class 523B
R.class 531B
R$attr.class 340B
R$id.class 416B
com
flys
floatbar
R$string.class 424B
R$layout.class 419B
R$drawable.class 520B
R.class 524B
FloatBarActivity.class 4KB
R$attr.class 337B
R$id.class 413B
classes.dex 5KB
proguard.cfg 1KB
AndroidManifest.xml 754B
src
com
flys
floatbar
FloatBarActivity.java 3KB
project.properties 360B
res
values
strings.xml 186B
layout
item.xml 272B
main.xml 728B
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_menu_run_page.png 6KB
ic_launcher.png 4KB
ic_menu_manage.png 6KB
ic_menu_search.png 5KB
drawable-mdpi
ic_launcher.png 3KB
.classpath 364B
gen
org
avcon
floatbar
R.java 1KB
com
flys
floatbar
R.java 1KB
assets
共 39 条
- 1
zjt19870816
- 粉丝: 1
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 机器学习和数据挖掘课程设计-米其林餐厅数据挖掘管理系统源码+使用文档说明.zip
- html html html展示我与ai的对化
- 数据结构课程设计-全国交通出行咨询模拟系统C语言实现源码.zip
- cef-binary-109.0.1+gcd5e37a+chromium-109.0.5414.8-windows32
- 基于C语言的全国交通咨询系统模拟源码.zip
- 正点原子HAL库 STM32F4 DMA(学习自用附源码)
- 炫酷代码雨,超级炫酷哦!!!
- 基于物联网MQTT协议的智能停车场管理系统
- POETIZE个人博客系统源码 - 最美博客
- 基于深度学习的行人检测系统源码+项目说明(YoloV3+Tensorflow).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页