前言:

       玩了公司的调试pad,玩了一下QQHD mini软件,哈 本人对Android QQ不感冒,不过好像写的不错,仿Iphone对话模式仿的 ... -。- 可能标题写的不清晰,唉 算了,能想到就这样了 .. 先看图(红色圈圈部分),长按然后显示操作条,包括对话,空间等!

图片:

               

思路:

        1、用 ListView (我用listView,多级菜单就没弄了)重写 Adapter 和 List Item 的显示隐藏来实现。
        2、List 中每一个 Item 都有这样的工具栏存在,长按列表项时候让它显示出来
        3、当失去焦点时候隐藏,或者长按其 Item 的时候隐藏自己,显示其他
       
 这样想想就不难实现了,下面是实现:
1、主界面很简单,就一个ListView,布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><ListView android:id="@+id/info_list" android:layout_width="fill_parent"android:layout_height="fill_parent" /></LinearLayout>
2、ListView 每一项的 Item 布局文件,工具栏默认为隐藏状态:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="wrap_content"><TextView android:id="@+id/txt_item"android:layout_width="fill_parent"android:layout_height="60dip" /></LinearLayout><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/layout_tip_bar"android:layout_width="fill_parent"android:layout_height="80dip"android:gravity="right"android:background="@drawable/tip_background"android:visibility="gone"><LinearLayout android:id="@+id/layout_item1"android:orientation="vertical"android:layout_width="wrap_content"android:layout_height="60dip"android:layout_marginLeft="80dip"android:layout_margin="8dip"><ImageView android:layout_width="50dip"android:layout_height="42dip"android:background="@android:drawable/ic_dialog_dialer" /><TextView android:layout_width="fill_parent"android:layout_height="20dip"android:textColor="@android:color/white"android:textSize="12sp"android:text="@string/item1"android:gravity="center_horizontal"/></LinearLayout><LinearLayout android:id="@+id/layout_item2"android:orientation="vertical"android:layout_width="wrap_content"android:layout_height="60dip"android:layout_toRightOf="@id/layout_item1"android:layout_marginLeft="80dip"android:layout_marginRight="50dip"android:layout_margin="8dip"><ImageView android:layout_width="50dip"android:layout_height="42dip"android:background="@android:drawable/ic_dialog_email" /><TextView android:layout_width="fill_parent"android:layout_height="20dip"android:textColor="@android:color/white"android:textSize="12sp"android:gravity="center_horizontal"android:text="@string/item2"/></LinearLayout></RelativeLayout></LinearLayout>
【备注】如果 xml 代码看的有点乏味,可以直接看图片,然后根据自己思维布局
3、接下来就是 Adapter 的重写了,都烂了 相信你都知道了,^_^
public class ListAdapter extends BaseAdapter {private Context context = null;private LayoutInflater inflater = null;// 展现的信息private ArrayList<String> infoList = null;public ListAdapter(Context context, ArrayList<String> infoList) {this.context = context;this.infoList = infoList;this.inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);}public int getCount() {return this.infoList.size();}public Object getItem(int position) {return this.infoList.get(position);}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {// 防止内存泄漏if(convertView == null) {convertView = (View)this.inflater.inflate(R.layout.item, null);}TextView textView = (TextView)convertView.findViewById(R.id.txt_item);textView.setText(this.infoList.get(position));return convertView;}
}
4、下面是Activitiy,主要数据都在这里处理,包括单击,长按事件
public class ListItemBarShowActivity extends Activity implements OnItemClickListener, OnItemLongClickListener {/** Called when the activity is first created. */private ListView listView = null;private ListAdapter listAdapter = null;private ArrayList<String> infoList = null;// 工具栏 【备注1】private RelativeLayout tipLayout = null;private ObjectClickListener oListener = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// 初始化init();}@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {// 如果当前有显示,隐藏起来 【备注2】if(this.tipLayout != null) {this.tipLayout.setVisibility(View.GONE);}}@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {// 先让之前显示的隐藏掉 【备注2】if(tipLayout != null) {tipLayout.setVisibility(View.GONE);}tipLayout = (RelativeLayout)view.findViewById(R.id.layout_tip_bar);tipLayout.setVisibility(View.VISIBLE);// 要设置聚焦,不然怎么点击都是listView的单击事件tipLayout.setFocusable(true);tipLayout.findViewById(R.id.layout_item1).setOnClickListener(this.oListener);tipLayout.findViewById(R.id.layout_item2).setOnClickListener(this.oListener);return true;}/** 工具栏工具单击事件 */private class ObjectClickListener implements OnClickListener {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.layout_item1: // 【备注3】Toast.makeText(ListItemBarShowActivity.this, "item1 Click", Toast.LENGTH_SHORT).show();break;case R.id.layout_item2:Toast.makeText(ListItemBarShowActivity.this, "item2 Click", Toast.LENGTH_SHORT).show();break;}}}/** 初始化 */private void init() {this.infoList = new ArrayList<String>();this.oListener = new ObjectClickListener();infoList.add("第一个");infoList.add("第二个");infoList.add("第三个");infoList.add("第四个");this.listAdapter = new ListAdapter(this, this.infoList);this.listView = (ListView)this.findViewById(R.id.info_list);this.listView.setOnItemClickListener(this);this.listView.setOnItemLongClickListener(this);this.listView.setAdapter(this.listAdapter);}}

【备注1】:用成员变量来保存工具栏整个 layout 是为了显示和隐藏只操作一个对象

【备注2】:先判断不为空,不然在变量未初始时候会报错,里面有2种,
                   第一种是随便点击任意非本身 item 就消失掉工具栏(看QQHD)
                   第二种是长按其他 Item 项本身消失,长按那个显示
【备注3】:这里 layout 按下无动态反馈,可以动态显示,或者设置 view.setBackgroundDrawable(**) 给用户反馈
这个只是初步,仅仅实现了思路,如果要做的好还要包括布局,美化等等 ..,好了 看看效果图吧 !
     
想要整个工程的,可以留下邮箱.. 或者下载 这里

[Android应用] 仿QQHD长按好友列表显示操作条相关推荐

  1. Android 实现仿微信朋友圈九宫格图片+NineGridView+ImageWatcher(图片查看:1.预览,2.拖动,3.放大,4.左右滑动,5.长按保存到手机)的功能

    一.测试 实现: 二.添加依赖包: implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.recycl ...

  2. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果

    本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...

  3. android+高仿视频录制,android高仿微信视频编辑页

    android高仿微信视频编辑页-视频多张图片提取 上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑 ...

  4. Android高仿IOS和QQ的弹出对话框

    我们知道Android中其实并不提供圆形的东西,像Button,TextView,EditView等等都是没有弧形元素在里面(看看这些控件的属性就知道了).而很多时候我们的程序中又需要用到这样有弧形元 ...

  5. android+qq底部界面,Android 高仿QQ 界面滑动效果

    Android高仿QQ界面滑动效果 点击或者滑动切换画面,用ViewPager实现, 首先是布局文件: android:layout_width="match_parent" an ...

  6. android高仿微信视频编辑页-视频多张图片提取

    android高仿微信视频编辑页-视频多张图片提取 上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑 ...

  7. Android自定义控件--仿安全卫士中的一键加速【圆形进度条】

    最近看到a10615的:Android自定义控件–仿安全卫士中的一键加速.自己零零散散学习了几个月,也想尝试下.几天的功夫总算把它弄出来,虽然没有泓洋的强大,但是该有的自定义属性也有了,先来看看效果图 ...

  8. android仿微信图片上传进度,Android开发之模仿微信打开网页的进度条效果(高仿)...

    一,为什么说是真正的高仿? 阐述这个问题前,先说下之前网上的,各位可以复制这段字,去百度一下  "仿微信打开网页的进度条效果",你会看到有很多类似的文章,不过他们有个共同点,就是实 ...

  9. android com.mylhyl,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. photopicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

最新文章

  1. CodeForces 597A Divisibility
  2. http/https面试总结
  3. jquery中$(document).ready(function(){//todo});window.onload时间线关系
  4. 2015-12-03 AD中用户属性Lastlogon与LastlogonTimeStamp的区别
  5. Django学习笔记第三篇--关于响应返回
  6. Pocket通证POKT锁仓总价值超2.1947亿美元
  7. Ubuntu配置教程
  8. python写水仙花数
  9. Linux下Libtorch运行出现free(): invalid pointer报错
  10. java调用录像_java调用摄像头拍照录像
  11. java 视频转mp4_java视频转码mov转MP4
  12. android反编译脱壳,Android脱壳圣战之---如何脱掉爱加密家的保护壳
  13. spring mvc 双亲上下文问题
  14. 如何取消EXCEL文件的“受保护的视图“
  15. 宋丹丹晒年轻旧照 桃眼杏腮被赞美女
  16. 《Linux 驱动:输入子系统》
  17. vue路由跳转不执行mounted方法
  18. 2022年全球市场次氯酸钠总体规模、主要生产商、主要地区、产品和应用细分研究报告
  19. ECPP——利用有限域上的椭圆曲线,精确判定素数的算法
  20. 边缘计算,是在炒概念吗?

热门文章

  1. 网页/网站/博客等刷点击率(流量)方法
  2. ESP8266 RTOS SDK 开发环境搭建
  3. Python实现股票行情接收V013
  4. 基于SSM框架大学教务管理平台项目
  5. linux dd nand,Flash基础入门之采用dd 工具做Nand Flash磨损均衡
  6. 7x7换成3个3x3卷积
  7. Ardunio开发实例-热敏电阻温度传感器
  8. shopee商家入驻之后,怎么做好虾皮店铺上新和引流?
  9. 爱普生Epson BA-T500 打印机驱动
  10. 从17万暴涨到1144万,猛翻66倍...