客户端的侧滑效果,简单实用,附如下代码:
其中Scroller的代码就不沾了,和系统提供的Scroller是差不多的,可参照源码.
private View content; private View menu; private boolean isMenuShow = false; public MySlideView(Context context, AttributeSet attrs) { super(context, attrs); scroller = new Scroller(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); menu = getChildAt(0); content = getChildAt(1); menu.measure(MeasureSpec.makeMeasureSpec(menu.getLayoutParams().width, MeasureSpec.EXACTLY) , heightMeasureSpec); content.measure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { System.out.println("layout:::"+getChildCount()); menu.layout(0-menu.getMeasuredWidth(), 0, 0, b); content.layout(0, 0, r, b); } private int firstX; private int lastX; @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: firstX = lastX = (int) event.getX(); break; case MotionEvent.ACTION_MOVE: int disX = (int) (lastX - event.getX()); lastX = (int) event.getX(); int nextScrollX = getScrollX()+disX; // 可能的,下一个 mScrollX 的值 if( nextScrollX >= -menu.getWidth() && nextScrollX <=0){ scrollBy(disX, 0); } break; case MotionEvent.ACTION_UP: int curScrollX = getScrollX(); if(curScrollX > -menu.getWidth()/2){ isMenuShow = false; }else{ isMenuShow = true; } flushState(); break; } return true; } private void flushState() { int distance = 0; if(!isMenuShow){ // scrollTo(0,0); distance = 0-getScrollX(); }else{ // scrollTo(-menu.getWidth(),0); distance = -menu.getWidth()-getScrollX(); } scroller.startScroll(getScrollX(), 0, distance, 0); invalidate(); } @Override public void computeScroll() { if(scroller.computeScrollOffset()){ scrollTo(scroller.getCurrX(),0); invalidate(); } } private Scroller scroller ; public void changeState() { isMenuShow = !isMenuShow; flushState(); }
还有在activity中处理点击事件,附如下代码:
private MySlideView msv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); msv = (MySlideView) findViewById(R.id.msv); findViewById(R.id.main_back).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { msv.changeState(); } }); } public void onClick(View v){ TextView tv = (TextView) v; Toast.makeText(this,tv.getText(), 0).show(); }
相关推荐
Android滑动菜单的实现方式多种多样,而"Android滑动菜单特效实现,仿人人客户端侧滑效果demo程序源码"是针对这一主题的一个实例项目。这个示例代码旨在模仿人人客户端的侧滑菜单效果,提供了丰富的交互体验和视觉...
5. **动画效果**:为了实现类似人人客户端的滑动效果,我们还可以添加自定义的动画,比如平滑地改变主内容视图的透明度或宽度,以及侧边栏的出现和消失动画。 在`RenRenSlideMenuDemo`项目中,你应该能找到一个完整...
本示例“仿人人侧滑效果”是利用开源库`SlidingMenu`实现的,它为用户界面增加了类似社交应用人人网的左侧滑动菜单效果。这种效果能够优雅地展示更多的内容和功能,同时保持主界面的简洁。 `SlidingMenu`库是由...
这个"仿人人网侧滑"项目旨在帮助Android初学者理解如何实现这样的功能,利用Scroller类来处理滑动动画效果。下面将详细讲解这个知识点。 一、侧滑菜单原理 侧滑菜单,通常被称为抽屉式导航(Drawer Navigation),...
在Android开发中,"仿知乎客户端侧滑"的实现涉及到多个关键知识点,主要集中在用户界面的设计和交互上。首先,我们需要理解Action Bar和DrawerLayout这两个核心组件的作用。 **Action Bar** 是Android应用中常见的...
【Android实现网易新闻客户端侧滑菜单(2)】这篇教程主要讲解了如何在Android应用中自定义实现网易新闻客户端的侧滑菜单。在第一部分中,我们了解到可以通过第三方库SlideMenu来快速实现这一功能,而在第二部分,...
本文将详细介绍如何在Android应用中实现一个仿人人客户端的侧滑菜单效果。这个效果的特点是,当用户从主界面向右滑动时,菜单会逐渐展现,而主界面则部分隐藏,仅保留左侧一小部分与菜单一同显示。 首先,我们需要...
为了实现类似Facebook的侧滑效果,我们需要在顶部视图控制器的视图上添加手势识别器,以便用户可以通过从屏幕左侧滑动来触发菜单。`ECSlidingViewController`库提供了内置的手势支持,只需进行适当的配置即可。 在...
QQ5.0及QQMINI侧滑效果是腾讯公司针对其即时通讯软件QQ的一个功能更新,这个特性在移动设备上尤为显著,提升了用户体验。侧滑效果通常指的是用户在使用应用时,通过在屏幕边缘向内滑动来触发特定的操作或者展示隐藏...
滚动视图(带侧滑效果)是移动应用开发中一种常见的交互设计,它结合了滚动浏览和侧滑操作,使得用户能够以更加直观和高效的方式查看和操作内容。这种设计通常用于新闻应用、社交媒体和电子邮件客户端等,其中网易...
在Android应用开发中,侧滑菜单(SlidingMenu)是一种常见的设计模式,它通常用于实现主界面与侧边栏的交互,比如360手机助手和网易新闻客户端。这种设计可以提供一个隐藏的导航面板,用户通过从屏幕边缘向内滑动来...
这个"Android高级应用源码-仿照360手机助手,网易新闻客户端 实现 侧滑.zip"压缩包包含了实现这种侧滑效果的源代码示例。这里我们将详细探讨这一设计模式及其实现方式。 首先,侧滑菜单通常出现在手机屏幕的左侧或...
在Android开发中,侧滑菜单已经成为了许多应用的标准设计元素,尤其在新闻客户端中非常常见。这个教程将向你展示如何实现类似网易新闻客户端的侧滑菜单。首先,侧滑菜单提供了一种高效的方式,将大量内容存储在隐藏...
SlidingMenu是一款开源的Android库,由Jeremy Feinstein创建,用于在Android应用中实现侧滑效果。它提供了多种滑动模式,如顶部滑动、底部滑动以及左右滑动,且可以自定义滑动速度和敏感度。在本示例中,我们关注的...
综上所述,网易新闻客户端的这个slidingmenudemo项目提供了一个学习和实践Android侧滑菜单与ViewPager集成的良好示例,对于提升应用的用户体验和交互设计具有重要参考价值。开发者可以通过研究这个项目,深入理解这...
在这个项目中,开发者可能使用了自定义实现,以便更好地模仿360手机助手和网易新闻客户端的样式和交互效果。 2. **Material Design**:Android的Material Design设计语言是谷歌推荐的应用界面设计规范,它提供了...
【标题】"仿花瓣Android客户端,瀑布流,侧滑菜单" 涉及的主要知识点包括Android应用程序开发、用户界面设计以及数据展示技术。这是一款基于Android平台的应用程序,旨在模仿花瓣网(Huaban)的客户端功能,特别是其...