- 浏览: 5820828 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
View 拖动&插入
即: 支持 拖动图标 然后把之插入 2个View 之间
为了降低难度 选用了若干ImageView 放入ViewGroup : vertical LinearLayout
[代码 步骤]
1. 定义布局:main.xml :
2. 变量初始化
3. 定义OnTouchListener 用于监听所有动作 并注册LinearLayour的所有View 实现为:
4. getLocation(View) 用于: 根据目标View 判断待插入的位置 即:哪2个相邻ImageView 之间 实现为:
即: 支持 拖动图标 然后把之插入 2个View 之间
为了降低难度 选用了若干ImageView 放入ViewGroup : vertical LinearLayout
[代码 步骤]
1. 定义布局:main.xml :
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/linear" > < ImageButton android:layout_width="100dip" android:layout_height="100dip" android:src="@drawable/beijing1_b"/> < ImageButton android:layout_width="100dip" android:layout_height="100dip" android:src="@drawable/beijing2_b"/> < ImageButton android:layout_width="100dip" android:layout_height="100dip" android:src="@drawable/beijing3_b"/> < ImageButton android:layout_width="100dip" android:layout_height="100dip" android:src="@drawable/beijing3_b"/> < /LinearLayout>
2. 变量初始化
lLayout = (LinearLayout)findViewById(R.id.linear);
3. 定义OnTouchListener 用于监听所有动作 并注册LinearLayour的所有View 实现为:
touchListener = new OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int action = event.getAction(); int x = (int) event.getRawX(); int y = (int) event.getRawY(); switch(action){ //鼠标按下 拖拉动作开始 case MotionEvent.ACTION_DOWN: point1 = v.getTop(); startX = (int)event.getX(); startY = y - v.getTop(); break; //鼠标移动 拖拉动作进行中 case MotionEvent.ACTION_MOVE: v.layout(x - startX, y - startY, x + v.getWidth() - startX, y - startY + v.getHeight()); v.bringToFront(); v.postInvalidate(); break; //鼠标释放 拖拉动作结束 case MotionEvent.ACTION_UP: point2 = v.getTop(); //计算插入位置 位于哪两个相邻View之间 int dest = getLocation(v); //remove ori view, and then add view here lLayout.removeView(v); lLayout.addView(v, dest); break; } return false; } }; //to listener all ImageView for(int i=0;i< p> ImageView iv = (ImageView)lLayout.getChildAt(i); if(iv !=null){ iv.setOnTouchListener(touchListener); } else { //error, view is null! } }
4. getLocation(View) 用于: 根据目标View 判断待插入的位置 即:哪2个相邻ImageView 之间 实现为:
public int getLocation(View v){ for(int i=0;i< p> ImageView iv = (ImageView)lLayout.getChildAt(i); ImageView iv2 = (ImageView)lLayout.getChildAt(i+1); if(iv.getTop()< v.getTop() && iv2.getTop() > v.getTop()){ //refer delta of point1 & point2 if(point1 < point2){//drag to bottom return i+1; } else {//drag to up return i+1; } } } //otherwise return last location return lLayout.getChildCount()-1; }
发表评论
-
http://www.android-studio.org/
2018-08-06 09:25 0http://www.android-studio.org/ ... -
SlidingDrawer源码
2012-03-14 10:13 3806我把SlidingDrawer源码提了出来,希望对1.5的朋友 ... -
简单拖动效果(带Cache,需要完善)
2011-10-13 15:10 4227如何去实现一个具有幻象的拖拽效果? 所谓”幻象“就是当你按下去 ... -
Android Activity中启动另一应用程序的方法,无需得到类名
2011-08-02 14:46 17259在网上搜索了一会相关的实现代码,发现所有的文章都说是需要包名和 ... -
java-universal-tween-engine,一个动画系统库
2011-06-29 09:21 6742http://code.google.com/p/java-u ... -
网上发现的一个android UI包
2011-05-24 12:21 4093里面有些UI和效果 -
android中使用代码启动其他程序
2011-04-29 23:15 5289你要訪問其他的程序,那麼這個程序要先裝載到模擬器或真機上面,因 ... -
listView背景问题以及限制editText字数以及如果想通知别人已经不能在写
2011-04-29 22:44 32091.在listView设置好背景之后 你如果点击空白出 你会发 ... -
Android键盘和触摸事件处理
2011-04-29 22:32 7003activity和VIEW都能接收触摸和按键,如果响应事件只需 ... -
Android的绘制文本对象FontMetrics的介绍及绘制文本
2011-04-29 22:29 11491一。Android绘制文本对象FontMetrics介绍 ... -
使TextView文本可以水平和垂直滚动
2011-04-29 21:59 14427在做一个小的电子书程序,要求电子书具有放大缩小的功能,所以肯定 ... -
ArrayAdapter源码
2011-04-29 12:29 6302看看人家怎么写的。 /* * Copyright (C ... -
Android下获取开机时间
2011-04-02 21:51 6226找了一圈没发现能得到开机启动时间资料,于是乎突发奇想,得到了解 ... -
AutoCompleteTextView连接到数据库
2011-03-30 20:49 4728AutoCompleteTextView可以根据输入 ... -
改变屏幕Brightness(亮度)
2011-03-30 12:48 4604http://www.eoeandroid.com/forum ... -
android 拖拽图片&拖动浮动按钮到处跑
2011-02-24 20:55 31771来自老外: import android.app.Acti ... -
拖动一个控件在另一个控件(layout)上,并固定位置在几个位置显示
2011-02-24 20:51 5893实现效果: 鼠标拖动btn SSS,SSS在水平的layo ... -
Handler与Message类,实现n秒后无操作自动消失功能
2011-02-24 20:45 4641实现功能:某控件不操作10秒后,自动消失。如照相机变焦条出现后 ... -
带删除按钮的ListView
2011-02-24 10:33 6146不用说了,上图先: import java.util.A ... -
android3.0之Action Bar基础
2011-02-22 17:12 6828http://www.android123.com.cn/an ...
相关推荐
为了实现拖动功能,我们还需要一个自定义的Adapter,它需要知道如何在数据集中插入、删除和更新项。在ACTION_DRAG_ENDED时,我们调用Adapter的notifyDataSetChanged()方法,让ListView重新渲染,反映数据集的变化。 ...
在Android平台上,开发一个能够加载PDF文件、实现电子签名并允许签名可拖拽的应用是一项具有挑战性的任务。本文将深入探讨这一技术实现的关键知识点,包括Android PDF处理、电子签名技术以及用户交互设计。 首先,...
- **拖动过程**:在拖动过程中,`DragSortAdapter`会实时更新列表,将原位置的项暂时移除,同时在新位置插入浮动视图,以模拟拖动效果。 - **拖动结束**:用户松手后,`DragSortAdapter`会根据当前的位置更新数据源...
这两个自定义View案例都涉及到Android图形绘制和事件处理的基础知识,同时也体现了Android开发中的创新思维。在实际项目中,自定义View可以帮助我们实现独一无二的界面和交互,提升用户体验。理解并掌握自定义View的...
此功能需要精确的坐标计算,确保Item在拖动过程中能正确地插入到新的列中。 4. 放大缩小:看板视图的放大缩小功能提供了一种查看细节或全局视图的方式。在Android中,可以利用ScaleGestureDetector来检测用户的缩放...
4. **增删效果**: 添加元素通常涉及在`ViewGroup`中插入新的`View`实例,并调用`addView()`方法。删除元素则需要找到要删除的`View`,并调用`removeView()`。为了提供更好的用户体验,我们在添加或删除元素时,不仅...
在本案例中,我们将探讨如何实现一个仿QQ可拖拽列表功能,这个功能允许用户通过手势拖动ListView中的项来重新排序列表。下面我们将逐步解析这个功能的实现过程。 首先,我们需要创建一个布局文件`list_item.xml`,...
7. **性能优化**: ListView通常会复用视图(view recycling),以提高性能。在拖动排序时,要注意在`getView()`中正确设置每个item的状态,避免因视图复用导致的显示混乱。 8. **状态保存与恢复**: 如果应用在拖动...
如果上述方法无法满足需求,可以考虑创建自定义`View`,继承自`ViewGroup`,并重写`onMeasure`和`onLayout`方法,以实现更复杂的图文混排逻辑。 8. **第三方库**: 虽然本文主要介绍原生实现,但实际开发中,可以...
这个Android高级应用源码主要展示了如何在Android平台上创建一个功能丰富的表格类视图,它具有可拖动、查询以及信息添加的功能。对于Android开发者来说,理解并掌握这些知识点是提升应用交互体验的关键。 首先,...
这个源码项目"Android高级应用源码一个最最基础的图形程序,圆可以拖动,两点触控是删除圆,3点触控是添加一个圆.zip"提供了一个简单但有趣的实例,展示了如何在Android上实现动态图形操作和多点触控功能。...
android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> ``` 2. 设置监听器: 在...
在Android开发中,为应用程序添加生动且用户友好的功能总是能提升用户体验,"一个可拖动、好看的歌词View.zip"就是一个这样的开源项目,专为Android平台设计,旨在提供美观且互动性强的歌词显示功能。这个项目名为...
此外,如果拖动的item与其它item重叠,需要有一种机制来决定item的新位置,比如采用交换位置或者插入位置的方式。 最后,考虑到性能问题,我们不能在主线程中执行大量计算或更新操作,以免阻塞UI。因此,数据更新和...
2. **Drag and Drop**:实现元素的拖放功能,可以使用Android提供的Draggable View API。通过在RecyclerView的ItemView上启用拖放功能,用户可以轻松地对数据进行重新排序。这通常涉及到实现OnItemTouchListener接口...
SwipeRefreshLayout是Android SDK中内置的一个组件,它可以包裹一个子View,当用户下拉该子View时,会显示一个刷新指示器,同时触发刷新事件。 在"Android ListView下拉刷新 Demo"中,主要涉及以下技术点: 1. **...
2. **ItemAnimator**: 支持动画效果,如插入、删除和移动项时的平滑过渡。 3. **Adapter**: 作为数据源与视图之间的桥梁,处理数据与视图的绑定。 4. **ViewHolder**: 提供缓存机制,减少findViewById的调用,提高...
- 在运行时动态地添加或移除`View`,需要对Android布局管理器有深入理解,比如`LinearLayoutManager`或`GridLayoutManager`。 6. **Adapter模式**: - 为了将数据与UI元素关联,项目中必然使用了`Adapter`,它将...