android仿新闻阅读器菜单弹出效果实例(附源码DEMO下载)_Android

开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO。

原本觉得是最后完成后发网站客户端的,可是这样体现不出一个功能一个功能的分析实现效果,而且周期时间长,所以就完成一部分,发一部分,敬请谅解。

下面的菜单弹出效果在很多的新闻阅读器上都有,比如今日头条、360新闻等。

其实这个实现起来很简单,看其效果,其实就是一个PopupWindow,之后设定相应postion的按钮点击属性,之后获取按钮的位置,给它设置动画显示消失就可以出现了。

下面看看代码的思路:

由于整体是一个LISTVIEW,所以我把点击的事件写到了对应的Adapter适配器中。

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);
    }
  }
}

就这么多的内容,很简单,日后碰到这类相关的效果,也就不用怕了。

下面是我经过上述代码实现的效果:

下面放上该效果源码DEMO的下载地址:下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 弹出菜单
, 弹出式菜单
点击弹出菜单
ios小说阅读器 demo、android 阅读器demo、ios小说阅读器 源码、android 阅读器源码、小说阅读器app源代码,以便于您获取更多的相关知识。

时间: 2024-08-08 00:05:04

android仿新闻阅读器菜单弹出效果实例(附源码DEMO下载)_Android的相关文章

Android仿微信朋友圈全文收起功能示例(附源码)

在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文.收缩的功能,朋友如果想要看你发的动态,只要点一下全文就可以查看所有的全部的内容了,如果不想看,也没有必要把这一篇文章全部都滑到底部,才能看下一条内容. 下边将源码贴出来供大家参考:(代码不是最简便的,但是功能是可以的) 首先写一个布局,这个布局是每个子项的布局 item_text_list.xml

Android仿QQ长按删除弹出框功能示例

废话不说,先看一下效果图,如果大家感觉不错,请参考实现代码: 对于列表来说,如果想操作某个列表项,一般会采用长按弹出菜单的形式,默认的上下文菜单比较难看,而QQ的上下文菜单就人性化多了,整个菜单给用户一种气泡弹出的感觉,而且会显示在手指按下的位置,而技术实现我之前是使用popupWindow和RecyclerView实现的,上面一个RecyclerView,下面一个小箭头ImageView,但后来发现没有必要,而且可定制化也不高,还是使用多个TextView更好一点. 我封装了一下,只需要一个P

android高仿今日头条 --新闻阅读器

开发流程 第一篇:(android高仿系列)今日头条 --新闻阅读器 (一) 涉及到的知识点有 1.slidingmenu.lib  (侧拉菜单包)   使用方法配置以及下载:点击这里   实现:客户端中左右2边侧拉菜单 2.命名规范可以参考:android命名规范   实现:源码中包.类.方法名称的统一 3.如何反编译:反编译就这么简单   实现:客户端中资源文件的获取 4.Fragment以及HorizontalScrollView的使用,以及重写HorizontalScrollView  

Android实现微博菜单弹出效果

先上Android仿微博菜单弹出效果图,这个截图不是很流畅,大家可以下载apk试一下. 说一下实现思路: 1.截取当前窗口,对图片做高斯模糊处理,将处理后的图片做popupwindow的背景图片: 2.创建popupwindow,完成布局,这儿要注意:View的移动范围是由parent的大小决定的,就是只能在parent的范围内移动: 3.给买个View添加进入动画,每个比前一个延期50ms播放动画,关闭窗口时相反: 4.为View的动画添加回弹插值器: MoreWindow.java窗口 pa

Android仿QQ消息提示实现弹出式对话框_Android

本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo

Android仿QQ消息提示实现弹出式对话框

本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo

Android开发中用相机拍照后图片裁剪的实例及源码

其实Android提供Intent让我们打开系统的相机,但是系统相机跟自己app风格不搭,而且用起来体验不好.所以我使用了SDK提供的camera API自定义了一个相机,并且在相机界面上面添加了参考线,有助于用户将题目拍正,提高ocr的识别率. 1.绘制参考线的代码 public class ReferenceLine extends View {     private Paint mLinePaint;     public ReferenceLine(Context context) {

Android编程实现QQ表情的发送和接收完整实例(附源码)_Android

本文实例讲述了Android编程实现QQ表情的发送和接收.分享给大家供大家参考,具体如下: 在自己做一个聊天应用练习的时候,需要用到表情,于是就想着模仿一下QQ表情,图片资源完全copy的QQ.apk,解压就可以得到,这里不细说. 下面将该应用中的表情模块功能抽离出来,以便自己以后复习回顾.. 先看一下效果图: 首先进入界面:(完全仿照QQ) 点击一下上面的表情图标: 选择一些表情,输入一些文字混合: 点击发送: 可以看到文字和表情图片都一起显示出来了. 下面列出一些关键代码: 表情工具类Exp

Android编程实现QQ表情的发送和接收完整实例(附源码)

本文实例讲述了Android编程实现QQ表情的发送和接收.分享给大家供大家参考,具体如下: 在自己做一个聊天应用练习的时候,需要用到表情,于是就想着模仿一下QQ表情,图片资源完全copy的QQ.apk,解压就可以得到,这里不细说. 下面将该应用中的表情模块功能抽离出来,以便自己以后复习回顾.. 先看一下效果图: 首先进入界面:(完全仿照QQ) 点击一下上面的表情图标: 选择一些表情,输入一些文字混合: 点击发送: 可以看到文字和表情图片都一起显示出来了. 下面列出一些关键代码: 表情工具类Exp