接上篇android listview仿ios 3dTouch效果,对代码进行整合进类似ios通讯录里面,效果图如下:

    、

效果如上,在上篇的内容后面跳出电话信息。

popmenu布局文件代码

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="wrap_content"><LinearLayoutandroid:id="@+id/pop_name_ll"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/pop_name_bg"android:paddingLeft="10dp"android:gravity="center_vertical"android:layout_marginLeft="5dp"><RelativeLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/pop_photo"/><TextViewandroid:id="@+id/pop_photo_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:textColor="#FFFFFF"android:textSize="30sp"/></RelativeLayout><TextViewandroid:id="@+id/pop_name"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:text="@string/imei_panel_close"android:layout_marginLeft="10dp"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center_horizontal"android:layout_marginLeft="2dp"><LinearLayoutandroid:id="@+id/pop_mms_ll"android:layout_width="match_parent"android:layout_height="110px"android:background="@drawable/pop_up_bg"android:paddingLeft="20dp"android:gravity="center_vertical"android:layout_marginTop="10dp"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/pop_mms_unpress"/><TextViewandroid:layout_width="700px"android:layout_height="match_parent"android:gravity="center_vertical"android:text="@string/pop_mms"android:layout_marginLeft="10dp"/></LinearLayout><LinearLayoutandroid:id="@+id/pop_call_ll"android:layout_width="match_parent"android:layout_height="110px"android:background="@drawable/pop_down_bg"android:paddingLeft="20dp"android:gravity="center_vertical"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/pop_phone_unpress"/><TextViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:text="@string/pop_call"android:layout_marginLeft="10dp"/></LinearLayout></LinearLayout>
</LinearLayout>

在源代码中,通讯录的点击事件的页面是在Fragment里面的,这时候不能将高斯模糊的图片放在该布局上,要放到对应的activity,点击的时候利用回调处理popmenu的弹出。要注意的是弹出的和高斯模糊图片颜色过于接近,肉眼分别不出来效果,在最上面的高斯模糊图片上面再加一个带透明灰色的全屏view。

AllContactsFragment.java

//begin add by cscgetListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {uri = (Uri) view.getTag();if(uri!=null) {count = 0;sampleImg = DialerUtils.captureScreen(getActivity());DialtactsActivity.imageUp.setVisibility(View.VISIBLE);DialtactsActivity.imageDown.setVisibility(View.VISIBLE);DialtactsActivity.imageUp.setImageBitmap(sampleImg);gaussianBlurImg = DialerUtils.blur(getActivity(),sampleImg, 25f);// 高斯模糊图片DialtactsActivity.imageDown.setImageBitmap(gaussianBlurImg);DialtactsActivity.imageUp.setImageAlpha(255);
//                HashMap item = (HashMap)getListView().getItemAtPosition(position);
//                String section =String.valueOf(item.get("name").toString());//get每一行的数据的名字nameOrNum = DialerUtils.getPhoneContacts(getActivity(),uri)[0] == null ? DialerUtils.getPhoneContacts(getActivity(),uri)[1] : DialerUtils.getPhoneContacts(getActivity(),uri)[0];phoneNum = DialerUtils.getPhoneContacts(getActivity(),uri)[1];DialtactsActivity.testTv.setText(nameOrNum);int[] location = new int[2];getListView().getChildAt(position - getListView().getFirstVisiblePosition()).getLocationOnScreen(location);lp.setMargins(0, location[1], 0, 0);DialtactsActivity.testTv.setLayoutParams(lp);DialtactsActivity.viewShadow.setVisibility(View.VISIBLE);DialtactsActivity.testTv.setVisibility(View.VISIBLE);is3DTouch = true;}return false;}});getListView().setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()) {case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_MOVE:if (is3DTouch) {if (count < 255)count = count + 8;int alpha = 255 - count;if (alpha < 0)alpha = 0;DialtactsActivity.imageUp.setImageAlpha(alpha);if(alpha == 0){myListener.showPopupWindow(DialtactsActivity.testTv,nameOrNum,phoneNum,uri);DialtactsActivity.testTv.setVisibility(View.GONE);return false;}}break;case MotionEvent.ACTION_UP:break;}return false;}});// end add by csc
myListener.showPopupWindow(DialtactsActivity.testTv,nameOrNum,phoneNum,uri);

当第一个出来的item透明度为不透明的时候,回调showPopupWindow(View view,String popName,String phoneNum,Uri uri)方法,处理popmenu的弹出

public interface MyListener{public void showPopupWindow(View view,String popName,String phoneNum,Uri uri);}

该方法在DialtactActivity.java中实现:

/*begin add by csc for 3d touch*/public void showPopupWindow(View view,String popName, String phoneNum,Uri uri) {final Uri uris = uri;final String phoneNumber =phoneNum;popNameTv.setText(popName);popPhotoTv.setText(popName.subSequence(0, 1));viewShadow.setVisibility(View.VISIBLE);popNameLl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (CompatUtils.hasPrioritizedMimeType()) {ContactsContract.QuickContact.showQuickContact(getApplicationContext(), v, uris, null,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);} else {ContactsContract.QuickContact.showQuickContact(getApplicationContext(), v, uris, ContactsContract.QuickContact.MODE_LARGE,null);}popupWindow.dismiss();}});popMmsLl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(phoneNumber!=null) {Uri smsToUri = Uri.parse("smsto:" + phoneNumber);Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);startActivity(intent);popupWindow.dismiss();}}});popCallLl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if(phoneNumber!=null) {Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber));startActivity(intent);popupWindow.dismiss();}}});popupWindow.setTouchable(true);popupWindow.showAsDropDown(view);}/*end add by csc for 3d touch*/

android listview仿iphone通讯录ios 3dTouch相关推荐

  1. android listview仿iphone特效

    2019独角兽企业重金招聘Python工程师标准>>> ios常见视图在顶部往下拉(下冲)或底部往上拉(上冲)有一个弹性回退的动画效果.著名的CM ROM和一些手机厂商也争相集成这种 ...

  2. android 高仿苹果listview,android listview仿iphone特效

    ios常见视图在顶部往下拉(下冲)或底部往上拉(上冲)有一个弹性回退的动画效果.著名的CM ROM和一些手机厂商也争相集成这种效果.android 从2.3开始实现了下冲到底部和上冲到顶部时颜色渐变动 ...

  3. android listview仿ios 3dTouch效果

    最近项目上要求在listview上实现类似ios 3dTouch功能,现在网上搜索一番,发现该文章很好的实现了这个功能,于是在这文章的基础上我自己做了一个改进.效果如图所示:     实现思路: 1. ...

  4. Android ListView仿微信聊天界面

    这篇文章主要为大家详细介绍了ListView仿微信聊天界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Android ListView仿聊天界面效果图的具体代码,供 ...

  5. Android 高仿Iphone Settings 基于Android M版本

    之前在公司有需要做高仿的项目,恰好分配到了Settings的修改 一级菜单效果图如下: Settings的修改简单来说,主要是资源的一些替换,各种Preference的定制.当然,还有一些零星的其他问 ...

  6. Android高仿QQ通讯录(附源码)

    先看看效果图吧 通讯录的基本实现功能 1,从android手机中读取联系人,通话记录,短信息数据 2,打电话,发送短信,接受短信(安装此应用后要先把手机重启下才能接受到短信息,不然会被其他第三方应用屏 ...

  7. android+高仿iphone,网购iPhone7P的失败经历,原来是安卓高仿!

    原标题:网购iPhone7P的失败经历,原来是安卓高仿! 大家都有网购的经历,有时候能买到便宜的好货,有时候却差强人意!但是大多人还是幸运的,为什么呢?因为他们至少在买手机没有上过当,但是当骗子遇到小 ...

  8. Android 高仿微信通讯录

    模仿了一下微信的联系人界面UI,由于是新手,所以看起来很简单的界面,结果被搞得半死,弄到凌晨5点,实在吃不消了,就睡了,早上9点又有小伙伴过来找我,约好了下午出去爬山的,没睡醒就出去玩了,一下午头都很 ...

  9. Android ListView仿手机qq主页面

    ListView的使用 仿照个人qq主页面 原图 效果图 首先删除原来的工具栏 在values文件夹下的styles文件中将style标签中的parent改为NoActionBar parent=&q ...

最新文章

  1. 文件下载类型__response
  2. 关于IO模拟时序(SPI)的注意事项
  3. idea 构建java 微服务_使用 IDEA 从 0 开始搭建 Spring Cloud 微服务
  4. neo4j 如何删除所以的节点和关系
  5. 【渝粤教育】国家开放大学2019年春季 1067知识产权法 参考试题
  6. Style transfer系列论文之——Image Style Transfer Using Convolutional Neural Networks,CVPR, 2016
  7. 帆软获取单元格值与赋值
  8. 虚拟光驱安装WIN7(client mac addr: no DHCP问题)
  9. 安卓通过经纬度,实现intent调用百度,高德,Google地图客户端实现驾车导航功能
  10. RFID在图书馆系统管理中的有哪些应用优势?
  11. Cadence 简易使用教程
  12. C语言第一个程序——一个简单的Hello world!程序
  13. 胰蛋白酶的化学性质及应用
  14. 绿色制造工厂对企业的好处
  15. 微信小程序手把手接入腾讯地图
  16. HTML部分基础语法
  17. 竞选班长的演讲稿_1500字
  18. SSM电影点播系统03-UI界面设计
  19. 我的第一个Ai软件发布 - Super LRC Editor WIth AI
  20. Greeks介绍 ,python实现方案

热门文章

  1. 基于小程序开发的藏书馆
  2. 0x7c9300e8 0x7c9300e8错误
  3. 大数据hadoop分布式系统
  4. 电源适配器的主要质量指标
  5. 短视频app源码开发,短视频录制的实现
  6. 利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容
  7. 【数据可视化应用】实现空间栅格(附R语言代码)
  8. 杂项:Unity3D
  9. 沈园恋之沈园诗,自创诗
  10. 安卓手机视频消重 去除qq短视频水印链接