仿今日头条滑动评论效果详解手机开发
2023-06-13 09:20:13 时间
开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO。
原本觉得是最后完成后发网站客户端的,可是这样体现不出一个功能一个功能的分析实现效果,而且周期时间长,所以就完成一部分,发一部分,敬请谅解。
下面的菜单弹出效果在很多的新闻阅读器上都有,比如今日头条、360新闻等。下
其实这个实现起来很简单,看其效果,其实就是一个PopupWindow,之后设定相应postion的按钮点击属性,之后获取按钮的位置,给它设置动画显示消失就可以出现了。
下面看看代码的思路:
由于整体是一个LISTVIEW,所以我把点击的事件写到了对应的Adapter适配器中。
[java]
view plain
copy
public class MyAdapter extends BaseAdapter { LayoutInflater inflater = null; Activity activity; ArrayList News newslist; private PopupWindow popupWindow; public MyAdapter(Activity activity, ArrayList News newslist) { this.activity = activity; this.newslist = newslist; inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); initPopWindow(); } @Override public int getCount() { return newslist != null ? newslist.size() : 0; } @Override public News getItem(int position) { if (newslist != null newslist.size() != 0) { return newslist.get(position); } return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View vi = convertView; final ViewHolder holder; if (vi == null) { vi = inflater.inflate(R.layout.listview_item, null); holder = new ViewHolder(); holder.item_title = (TextView) vi.findViewById(R.id.item_title); holder.item_content = (TextView) vi.findViewById(R.id.item_content); holder.button_showpop = (ImageView) vi.findViewById(R.id.button_showpop); vi.setTag(holder); } else { holder = (ViewHolder) vi.getTag(); } News news = getItem(position); holder.item_title.setText(news.getTitle()); holder.item_content.setText(news.getContent()); holder.button_showpop .setOnClickListener(new popAction(position)); return vi; } public class ViewHolder { TextView item_title; TextView item_content; ImageView button_showpop; } /** * 初始化popWindow * */ private void initPopWindow() { View popView = inflater.inflate(R.layout.listview_pop, null); popupWindow = new PopupWindow(popView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new ColorDrawable(0)); //设置popwindow出现和消失动画 popupWindow.setAnimationStyle(R.style.PopMenuAnimation); btn_pop_close = (ImageView) popView.findViewById(R.id.btn_pop_close); } /** popWindow 关闭按钮 */ private ImageView btn_pop_close; /** * 显示popWindow * */ public void showPop(View parent, int x, int y,int postion) { //设置popwindow显示位置 popupWindow.showAtLocation(parent, 0, x, y); //获取popwindow焦点 popupWindow.setFocusable(true); //设置popwindow如果点击外面区域,便关闭。 popupWindow.setOutsideTouchable(true); popupWindow.update(); if (popupWindow.isShowing()) { } btn_pop_close.setOnClickListener(new OnClickListener() { public void onClick(View paramView) { popupWindow.dismiss(); } }); } /** * 每个ITEM中more按钮对应的点击动作 * */ public class popAction implements OnClickListener{ int position; public popAction(int position){ this.position = position; } @Override public void onClick(View v) { int[] arrayOfInt = new int[2]; //获取点击按钮的坐标 v.getLocationOnScreen(arrayOfInt); int x = arrayOfInt[0]; int y = arrayOfInt[1]; showPop(v, x , y, position); } } }
相关文章
- Android统计图表绘制:基于新版MPAndroidChart绘制数理统计柱状图详解手机开发
- Android监听Home按钮被点击详解手机开发
- iOS获取设备信息常用方法详解手机开发
- iOS 时间类常用方法详解手机开发
- iOS打电话功能详解手机开发
- json解析使用第三方类库JSONKit详解手机开发
- iOS裁剪图片大小改变图片尺寸图片压缩详解手机开发
- 使用jqMobi开发app基础:下拉select详解手机开发
- Android开发学习总结——Android开发的一些相关概念详解手机开发
- [android]android项目的目录结构详解手机开发
- 关于Android的UI测试详解手机开发
- studio安装插件详解手机开发
- listview动态获取数据详解手机开发
- Android之ExpandableListView下拉分组的实现详解手机开发
- android获取短信并自动填充详解手机开发
- 地图开发添加标注物详解手机开发
- android开源项目下载地址详解手机开发
- Android热补丁技术—dexposed原理简析(手机淘宝采用方案)详解手机开发
- Freeline–Android平台上的秒级编译方案详解手机开发
- iOS使用自签名证书实现HTTPS请求详解手机开发
- 解决低版本Xcode不支持高版本iOS真机调试的问题详解手机开发
- iOS AutoLayout全解详解手机开发
- Android下的Linux指令集详解手机开发