`

android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)(转)

 
阅读更多

转载自:http://blog.csdn.net/vipzjyno1/article/details/23872695

 

 

开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能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仿苹果手机手表源码Demo

    android仿苹果手机手表源码Demo手表 安卓手表 苹果手表 苹果手表桌面.apk 为安卓上仿苹果手表的apk 。请安装在任何一部安卓设备上运行。 运行后出现苹果手表界面。 视频截图.gif 为运行后截图。 软件为softboy开发...

    仿QQ空间底部弹出菜单效果.zip

    该压缩包文件“仿QQ空间底部弹出菜单效果.zip”包含了一个用于实现类似QQ空间底部弹出菜单的安卓源码示例。这个效果是许多移动应用中常见的交互设计,尤其在社交应用中广泛使用,因为它提供了简洁且直观的导航方式。...

    android做一个点击菜单弹出来的动画

    本文将深入讲解如何在Android应用中实现一个点击菜单时弹出的动画效果,同时结合多种动画组合,为用户提供更为丰富的视觉体验。 首先,我们要明白Android中的动画可以分为两类:视图动画和属性动画。视图动画主要...

    Andorid项目源码 实现demo 超爽的android抽屉效果(源码)

    Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android抽屉效果(源码)Andorid项目源码 实现demo 超爽的android...

    仿qq弹出菜单源码

    本文将详细介绍如何在Android中实现一个仿QQ弹出菜单的源码,并针对新手提供指导。 首先,我们需要理解弹出菜单(PopupMenu)在Android中的基本概念。它是Android SDK提供的一种组件,可以在用户点击某个控件时弹出...

    Android滑动菜单特效实现,仿人人客户端侧滑效果demo程序源码

    Android滑动菜单的实现方式多种多样,而"Android滑动菜单特效实现,仿人人客户端侧滑效果demo程序源码"是针对这一主题的一个实例项目。这个示例代码旨在模仿人人客户端的侧滑菜单效果,提供了丰富的交互体验和视觉...

    Android仿美团界面APP源码.zip

    1. **布局设计**:源码中的XML布局文件展示了如何使用Android的LinearLayout、RelativeLayout、ConstraintLayout等布局管理器来构建复杂的用户界面,这些界面通常包含滑动菜单、顶部导航栏、轮播图、商品列表等元素...

    Android 仿团购应用图片菜单效果源码.zip

    该压缩包文件“Android 仿团购应用图片菜单效果源码.zip”包含了一个Android应用程序的源代码,用于实现类似团购网站的图片菜单效果。通过提供的图片和源码,开发者可以学习和理解如何在Android平台上创建一个具有...

    Android编程实现仿优酷旋转菜单效果(附demo源码)

    主要介绍了Android编程实现仿优酷旋转菜单效果的方法,较为详细的分析了Android实现旋转菜单的布局与功能实现技巧,并附带完整的demo源码供读者下载参考,需要的朋友可以参考下

    android 各种特效 源码 demo

    在Android开发中,实现各种...通过学习和分析"android_Demo效果集"中的源码,开发者不仅可以掌握各种特效的实现,还能提升对Android系统底层机制的理解,从而在实际开发中灵活运用,创造出更富有吸引力的Android应用。

    Android 仿苹果通话界面源码

    这个"Android 仿苹果通话界面源码"项目旨在为开发者提供一个参考实现,帮助他们了解如何在Android系统中创建具有iOS风格的交互体验。 首先,我们关注的是设计和布局。iOS的通话界面以其简洁、直观的设计著称,包括...

    安卓源码包android 动画效果Android 烟花效果源码等21个合集.zip

    安卓源码包android 动画效果Android 烟花效果源码等21个合集: activity切换特效.rar Android Layout UI 首页加载过渡动画,星期变化动画.rar android 仿真翻页效果.rar Android 烟花效果源码.zip Android仿苹果的...

    Android 仿团购应用图片菜单效果源码.rar

    本示例源码“Android 仿团购应用图片菜单效果”旨在实现一个类似团购应用中的图片菜单,这种菜单通常具有滑动切换、动画过渡等特性,为用户提供直观且吸引人的操作方式。通过分析这个源码,我们可以学习到以下几个...

    Android项目源码高仿知乎androidstudio版本demo

    Android项目源码高仿知乎android studio版本demo是一个高仿知乎android studio 版本的项目源码,实现了包括侧滑效果、夜间模式、上拉刷新、下拉刷新、缓冲处理、幻灯片效果等功能。属于一个半成品的demo。现在提供给...

    android 属性动画Demo,发散式弹出菜单

    这个"android 属性动画Demo,发散式弹出菜单"是一个很好的示例,展示了如何利用属性动画来创建一个交互式的用户界面元素。在这个项目中,开发者可能使用了Android的AnimationUtils、ValueAnimator、ObjectAnimator等...

Global site tag (gtag.js) - Google Analytics