Android自定义显示数据表格仿头条频道拖动管理功能

  

项目中遇到这样个需求:应用的功能导航需要可拖动排序,类似头条中的频道拖动管理。效果如下,gif不是很顺畅,真机会好很多。

  

 Android自定义显示数据表格仿头条频道拖动管理功能

  

虽然类似的文章网上搜一下有很多,但写的都不令人满意,注释不清晰,而且动画还不够流畅。经本人整理优化后,拿出来供后续有需要的使用。

  

<>强实现原理:

  
      <李>显示数据表格作为基本控件   <李> WindowManager.addView的方式实现可拖动的视图李   <李> TranslateAnimation实现移动动画,动画完后更新适配器即可
      李   
  

主要的实现原理上面已经说明,源码中关键的地点也有注释,因此下面直接上源码。

        包com.hai.draggrid;   进口android.content.Context;   进口android.graphics.Bitmap;   进口android.graphics.PixelFormat;   进口android.util.AttributeSet;   进口android.view.Gravity;   进口android.view.MotionEvent;   进口android.view.View;   进口android.view.WindowManager;   进口android.view.animation.Animation;   进口android.view.animation.TranslateAnimation;   进口android.widget.AdapterView;   进口android.widget.BaseAdapter;   进口android.widget.GridView;   进口android.widget.ImageView;/* *   *长按拖动图标可以调整项位置的显示数据表格   *由huanghp lastposition=" + lastposition//+”,pointToPosition=" + pointToPosition (x, y) +”, ismove=" + isMoving);   如果(dragImageView !=零,,lastPosition !=INVALID_POSITION) {//如果(isMoving)刷:java; ">   String[]项=new String[]{“头条”,“视频”,“娱乐”,“体育”、“北京”,“新时代”   网,“易号”、“段子”,“冰雪运动”,“科技”,“汽车”,“轻松一刻”   时,“尚”、“直播”、“图片”,“跟帖”,“NBA”、“态度公开的课”   ”推荐”、“热点”,“社会”、“趣图”,“美女”、“军事"};      显示数据表格。setAdapter(新DragGridView.Adapter () {   @Override   公共空间交换(int起动位置,int endPositon) {   超级。交易所(起动位置,endPositon);   字符串条目=list.get(起动位置);   如果(起动位置& lt;endPositon) {   列表。添加(endPositon + 1项);   list.remove(起动位置);   其他}{   列表。add (endPositon、项);   列表。删除(起动位置+ 1);   }   for (int i=0;我& lt;list.size ();我+ +){   日志。e(标签,“交换:=" + list.get(我));   }   notifyDataSetChanged ();   }   …省略部分代码   @Override   公众视线getView (int位置、视图convertView ViewGroup父){//todo,这里需要优化,没有复用观点。也不能按传统方式服用视图,否则会造成拖动的视图空白//如果(convertView==null) {   convertView=getLayoutInflater () .inflate(出来。项,家长,假);//}   ((TextView) convertView.findViewById (R.id.tv)) . settext (getItem(位置);   如果(isDrag,,位置==holdPosition) {   convertView.setVisibility (View.INVISIBLE);   }其他convertView.setVisibility (View.VISIBLE);      返回convertView;   }   });      

  

本文到这就结束了,有需要的同学拿到轮子就可以直接使用了,谢谢!

  

不知道有没有眼尖的同学发现Adapterd的getView方法中有个todo需要优化。原因是这样:如果打开注释中的代码,复用convertView,会造成显示数据表格释放后的新位置一片空白,不知道什么原因,因此折中的方法就是每次都是新生成一个convertView。
  希

  

  

以上所述是小编给大家介绍的Android自定义显示数据表格仿头条频道拖动管理功能,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
  如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
  

Android自定义显示数据表格仿头条频道拖动管理功能