‘壹’ 如何在android中添加一个节分隔抽屉式导航
你说的效果实现可以分为两个部分:
一、拖拽部分,这部分你实现让scrollview跟着你的手移动
1、给scrollview添加onTouchListener或者自定义scrollview并重载其onTouchEvent方法。
2、根据move不停设置scrollview的坐标
你需要注意的是:event.getX()是你手指的坐标,而不是控件的坐标,很多人能够理解,但有的人写的时候会搞混。
你需要做的是:取得4个坐标——
(1)、你手指点下去的坐标,这个坐标在ACTION_DOWN中获得:primaryTouchCoord,这个坐标要一直保存,所以要在Touch事件外定义(类成员变量);
(2)、你手指当前的坐标curTouchCoord,在每次Touch事件触发的时候用event.getY()获得,即在switch外或者ACTION_MOVE中获得;
(3)、scrollview初始坐标primaryScrollViewCoord,这个坐标也在ACTION_DOWN中获得并且一直保存。
(4)、scrollview最终坐标curScrollViewCoord,在ACTION_UP中获得。
有了这四个坐标,就可以实现了。
‘贰’ APP常用8种导航形式
虽说一款应用的生死不是由导航决定,但毋庸置疑,导航模式的选择在产品用户体验上占有很大的比重。就导航本身来说,没有优劣之分,端看你的应用适合哪种。下面是我罗列的一些常见的移动导航模式,接下来会对其一一举例说明(注:重要模式会重点分析,其余简略,篇幅略长,不喜可跳过)
1、标签式
标签式导航是iOS平台上公认的最经典的导航模式,看市场上几乎有80%的应用都在使用就能知道。标签式导航关注的是平行空间的展示,它的优点是适用于多个内容体系,且重要程度相似(平级关系),能频繁在不同页面间切换,切换成本底,只需一次点击;缺点是占用一定高度空间,且标签数量有限,最多5个标签。
淘宝,是标签式导航的标准使用形式,每个标签作为一个导航分类放在标签栏中(注意都是名词)。可以算是标准形式的变形(还有其他变形形式,后面再讲),虽然也是有5个标签,但处于中间位置的标签不是作为导航使用,而是一个行为召唤按钮。行为召唤按钮主要强调某项重要功能的快捷使用,该功能需要是应用最核心且最常用的功能,优先级很高。比如instagram,它的目标是以一种快速、美妙和有趣的方式将你随时抓拍下的图片分享出来,它关注的是能随时随地抓拍。因此,作为行为召唤按钮的“拍照”放在标签栏上就很有必要。
但是,有些应用对于行为召唤按钮的放置并不合理。如下图的图3-,虽然文章的撰写是的核心功能,将其作为标签栏中的一个按钮,即能在视觉上凸现出来,又能减少操作负荷,似乎很棒。但却忽略了一个重要的问题,从使用环境来说,文章或者文档的撰写是需要在安静且能集中注意力的环境下,但移动app天然具有干扰多且注意力不集中的问题。而且在手机上输入上百字也是一件痛苦的事。对于这款产品的手机用户来说,可能用户对内容的消费比对执行动作更重要。
另外,还有一种常见的标签式导航的变种,即传统的标签式+点聚式。这里先专门讲一下点聚式,最为我们所熟知的点聚式就是曾经经典的path结构,即抽屉导航+点聚式,如下图所示—改版前图示,它的目的是将用户最频繁使用的多个核心功能点汇聚在主界面中显示,方便用户随时呼出使用。只是,如今单独使用点聚式的应用越来越少,就连path也对这种传统的点聚式进行了调整,变成了依附于标签的点聚式结构,如下图中的path改版后。还有下图中的样式1和样式2,也是这种形式的不同展现。他们的共同点是,使用同一个导航入口,进行多个同级功能的不同操作,大部分都是2-5个不同的操作选项,当然也会有更多,比如下图中的新浪微博,点击“加号”入口,出现了更多的功能选项,且这些功能的优先级相若。
其实,在Android 5.0中,这种点聚式更常用的表现形式是悬浮响应按钮,它代表的是这个app中最主要的操作。只是就目前来讲使用场景有限,实际应用并不理想。
二、抽屉式
抽屉式导航的目的是带给用户更为沉浸的体验。它的特点是,“阅读”为王,点击切换少,专注于主体信息本身。从表现形态来看,抽屉导航很符合产品的二八法则,即产品中只有20%的功能常用,所以要突显,剩下的80%不常用,因此隐藏。它不像标签导航一样强调平级关系的切换,而是突出重要且核心的功能。抽屉导航的另一些优点是,侧边导航收纳的导航标签可以是5个以上,节省屏幕空间。缺点是无法快速完成导航切换,操作成本高。
关于抽屉导航,在Android和ios平台的使用也有区别,可以看我的另一篇文章《关于Android和IOS交互上那些事》,此处就不做赘述。抽屉导航在Android平台上比ios更常使用。由于在ios上,抽屉导航没有专门的设计规范,所以使用上较为随意,表现形式也不受拘泥。
如果以抽屉导航和主页在空间位置为评判依据,其在风格上主要有3种表现,第一种是浮层,即导航抽屉处于主页上层,通过滑动或点击的手势打开抽屉,抽屉部分遮挡或覆盖原来页面的内容,如下图中图4,这种风格多数会在Android上出现。第二种是叠加式,即导航抽屉位于主页的底部,打开抽屉,原来的主页会向屏幕右侧滑动,显出主页下方的导航抽屉,如下图中图5,这种风格在ios上很普遍。第三种是嵌入层,即导航抽屉和主页处于同一层,通过轻滑、平移或点击打开抽屉,把原先的页面内容部分推出屏幕外,如下图中图6(注意导航和主页衔接处无阴影)。而第三种风格经常会有如下图图7的变形,就是说在打开侧边抽屉的时候,嵌入式抽屉不仅把上一级页面向右推开,还采用3D效果将其推到后面。了解不同风格可在设计时斟酌使用。
三、选项卡式
对于选项卡导航,不同平台有不同的设计规则,关于Android平台我就不多说了,请移步至《关于Android和IOS交互上那些事》有详细说明。今天主要说说ios上选项卡的表现,选项卡的本质即是,实现容器内不同视图或内容的切换。虽然对于选项卡本身,ios没有专门的规范约束,但这并不妨碍广大设计者们自由发挥。目前市场上主要有3种形式的选项卡:分段选项卡、固定选项卡和滑动选项卡。
分段选项卡:是由两个或两个以上宽度相同的分段组成,正常情况下不超过4个,视觉上会有一个很明显的描边按钮。分段选项卡经常会作为二级导航,对主导航内容再次分类,可以在顶部导航栏的下方,也可以直接放在导航栏上,如下图所示。标签之间互相关联,只能点击切换,操作效率较低。
另外,就是固定选项卡和滑动选项卡,两者都可以直接点击或左右滑动切换选项,且一级和二级导航都能使用。区别就是滑动选项卡可以有更多选项,且能直接通过手指滑动导航找分类,适用于相关类别多的应用,如下图的电子商务网站。
四、下拉菜单式
现如今,下拉菜单式导航并不常用。下拉菜单和导航抽屉一样,是以突出内容为主的导航模式,一般位于产品顶部,通过点击呼出导航菜单。由于导航菜单位于屏幕顶部,不适合结合手势,操作负荷大,因此不适合需要频繁切换功能,且能在一定程度上节省屏幕空间。一般情况下,下拉菜单很容易被滑动选项卡取代,且滑动选项卡可以结合手势操作,使用效率更高,这也是现在下拉菜单很少被使用的原因,除非你的下拉菜单选项中有很明显的优先级区分。比如下图所示,图8的新浪微博首页作为默认选中项,显示和用户相关的所有微博,常态下用户只需要一直浏览下去即可,很少需要主动点击切换,除非想要筛选某些特定的微博内容,此处的内容优先级很容易区分。同理,图9也是如此,用户关注更多且更感兴趣的是以项目为维度的内容分组,因此用下拉菜单来表现。另外,多数菜单是以点击后弹框的形式出现,也有一些是从底部滑出一个新的页面调出菜单,如下图中的图10。
五、宫格式
宫格式导航,是一种类似于手机桌面各个应用入口的导航方式。每个入口往往是比较独立的信息内容,用户进入一个入口后,只处理与此入口相关的内容,如果要跳转至其他入口,必须要先回到入口总界面。这种导航经常用于工具类app中,它的优点是功能拓展性强,可增加多个入口。缺点是单页承载信息能力弱,层级深,不适合频繁任务切换。如下图的美颜相机就是标准的宫格式结构,每个功能类似于独立的app,且作为一级导航使用,这种表现形式现在越来越少。而剩下的其他三张图示,属于宫格式的一种变形,我称之为数据入口,这种只作为各种大数据入口的导航模式现在更多作为二级导航使用,特别是平台类产品。
六、列表式
列表式导航也是一种十分常见的导航模式,纯粹的列表导航很少见,一般都是搭配着别的导航模式一起使用,大多作为二级导航。列表中可以放置图片、标题或者详情文字等来展示信息,列表本身是一个传达信息效率很高的载体,因此使用列表的时候要注意,每个列表所占的屏幕空间,以及每屏能显示多少条列表等。如下图所示的图1-1采用了列表的分组模式,图2-2中列表中的每项信息可能都会影响用户的点击转化,所以如这种形式的列表,细节信息很重要。图1-3和图1-4为二级列表,点击列表右侧的小符号,可以展开或者隐藏信息,这方便用户查找信息并快速定位,多数情况下,点击右侧小符号可能会出现快捷编辑模式或者部分详情信息,便于用户直接编辑或者浏览。而点击整个列表,通常会进入新一级的详情页面。因此,设计师在设计的时候要注意。
七、图示式
图示式是一种更加可视化的导航,它能根据页面内容的变化及时更新图片,适合以图片为主的内容,像新闻、美食、旅行、视频图片等经常使用,常作为二级导航。由于图片可能需要经常更新,因此需要配置固定的栏目或标题,防止不断更新的图片让用户找不到入口。这种形式的导航常常会采用网格布局,如下图所示,每行基本上会有1-3个图示单位,不同的网格布局决定了每屏容纳的图示个数,因此用户浏览效率及点击转化率也会有所不同。
八、幻灯片式
幻灯片的导航方式,适用于图片或整块内容的并列展示,用户通过手指左右滑动来切换当前内容。正常情况下,幻灯片的数量不宜太多,最好控制在7-8个以内,避免用户操作疲劳。如下图所示,使用幻灯片设计最好在设计上提供视觉暗示,让用户清楚的知道所处的位置以及幻灯片数量,例如添加分页标识码,或者隐喻还有下一张图片等。
‘叁’ android怎么实现类似qq那样的右滑出现侧拉菜单
Android 实现类似QQ侧滑菜单,实现左右侧滑 源码。具有iOS 7/8 parallax effect 风格的侧边菜单,类似于最新版qq的菜单效果。ReisdeMenu 创意灵感来自于Dribbble1还有2,而这个是Android版的ResideMenu,在视觉效果上部分参考了iOS版的RESideMenu
‘肆’ Android 滑动菜单(slide menu) 背景 亮度和透明度设置
首先在sdk目录下source源码目录下搜索DrawerLayout文件,把相关的java文件导入工程
以5.0为例
@Override
protectedbooleandrawChild(Canvascanvas,Viewchild,longdrawingTime){
finalintheight=getHeight();
finalbooleandrawingContent=isContentView(child);
intclipLeft=0,clipRight=getWidth();
finalintrestoreCount=canvas.save();
if(drawingContent){
finalintchildCount=getChildCount();
for(inti=0;i<childCount;i++){
finalViewv=getChildAt(i);
if(v==child||v.getVisibility()!=VISIBLE||
!hasOpaqueBackground(v)||!isDrawerView(v)||
v.getHeight()<height){
continue;
}
if((v,Gravity.LEFT)){
finalintvright=v.getRight();
if(vright>clipLeft)clipLeft=vright;
}else{
finalintvleft=v.getLeft();
if(vleft<clipRight)clipRight=vleft;
}
}
canvas.clipRect(clipLeft,0,clipRight,getHeight());
}
finalbooleanresult=super.drawChild(canvas,child,drawingTime);
canvas.restoreToCount(restoreCount);
if(mScrimOpacity>0&&drawingContent){
/*
*这里是直接用画笔画了一层有透明度的方块覆盖在主内容上方,产生慢*慢变暗的效果,所以我们只需要在这里修改即可,
*根据代码逻辑可以知道我们只需要改变imag即可
*/
finalintbaseAlpha=(mScrimColor&0xff000000)>>>24;
finalintimag=(int)(baseAlpha*mScrimOpacity);
finalintcolor=imag<<24|(mScrimColor&0xffffff);
mScrimPaint.setColor(color);
canvas.drawRect(clipLeft,0,clipRight,getHeight(),mScrimPaint);
}elseif(mShadowLeft!=null&&(child,Gravity.LEFT)){
finalintshadowWidth=mShadowLeft.getIntrinsicWidth();
finalintchildRight=child.getRight();
finalintdrawerPeekDistance=mLeftDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)childRight/drawerPeekDistance,1.f));
//这里是绘制菜单的覆盖物
mShadowLeft.setBounds(childRight,child.getTop(),
childRight+shadowWidth,child.getBottom());
mShadowLeft.setAlpha((int)(0xff*alpha));
mShadowLeft.draw(canvas);
}elseif(mShadowRight!=null&&(child,Gravity.RIGHT)){
finalintshadowWidth=mShadowRight.getIntrinsicWidth();
finalintchildLeft=child.getLeft();
finalintshowing=getWidth()-childLeft;
finalintdrawerPeekDistance=mRightDragger.getEdgeSize();
finalfloatalpha=
Math.max(0,Math.min((float)showing/drawerPeekDistance,1.f));
mShadowRight.setBounds(childLeft-shadowWidth,child.getTop(),
childLeft,child.getBottom());
mShadowRight.setAlpha((int)(0xff*alpha));
mShadowRight.draw(canvas);
}
returnresult;
}
改变代码之后保存
这时候在布局文件中就不要使用android-supportv4包下的DrawerLayout的,改成你工程里修改后的DrawerLayout,运行就达到效果了
‘伍’ 移动APP的常见的几种导航形式
当确定了APP的设计需求和产品的整体结构之后,要着手开始规划和制作APP的原型及UI界面。一款APP的好与不好,很大部分取决于APP界面布局的合理性。这个时候就要想以最优的设计结构将APP的内容展现给用户,那么,如何将信息以最优的形式展现出来呢?这就涉及到了APP的导航应用方式,可以说一个优秀的导航设计对一款App的核心体验起到了决定性的作用!
知道了导航的重要性,在考虑导航设计时,需要注意以下事项:
1.可达性:
移动应用的导航功能可以说是所有界面最重要的组成部分,因此一定要保证其可达性,并把最关键的要素尽量突出,同时不要影响到内容本身。
2.目的性:
确保导航中的每个按钮要素简单明了,有明确的引导用户点击的目的性。让用户一看就知道是什么意思以及操作结果是什。不要弄的太过花哨,这样反而会让迷惑用户,起到反作用。
3.易于理解:
如果想设计比较高级的导航功能(例如链接图片、允许滑动或其他手势导航,或者访问隐藏菜单),请务必在设计过程中保证前后一致,以便用户熟悉你所使用的模式,同时还应加入一些额外的信息(例如小箭头、文字或改变颜色或高亮等)来吸引用户注意力,并以微妙的方式对用户进行引导。不要给用户呈上“看得见摸不着的导航功能”。
4.通用性
导航功能应当以一定的形式显示于移动应用的各个界面。各个导航模式不一定要完全相同,但其基本结构应当在应用内保持一致,可以根据背景进行小幅度的调整。
明确上述几点注意事项后,将APP的信息结构分层,把主要、最核心、最根本的功能放在第一层级,次要内容放在第二层级甚至更深。然后根据层级关系、结构关系确定导航的形式。
结合产品的深度和广度来共同探讨一下目前APP界面常见的几种导航形式,并分析其优缺点,从而进一步判断每一种导航形式更适合应用于哪种类型的APP!
标签式导航,也就是常说的Tab式导航。是目前应用最广泛、最常见的导航形式。
标签式导航可分为 顶部标签式导航、底部标签式、舵式导航(底部扩展式导航)。
顶部标签式导航
顶部标签式导航顾名思义,存在于页面的顶部。顶部标签导航多应用于Android平台,因其平台特性,底部含有虚拟的物理按键,如华为手机存在手机屏幕内的物理按键。
很多App为了适配安卓平台,采用了顶部标签式导航,目的是为了不与底部虚拟按钮组合在一起产生的信息堆叠和误操作,这也是一种妥协行为。但不断升级的Android平台app现如今也和ios尽量保持一致。
不过也有很多ios平台根据产品结构应用此类型的导航。
上图是虾米音乐app首页导航模式,采用了顶部标签式导航。这样设计是为了 更多展示标签下的内容,还有一点是支持快捷操作 。方便展示/点击下方快捷区域的内容和按钮(当前曲目、歌手、播放/暂停和下一曲)。
底部标签式导航
底部标签式导航是最常用的导航形式,一般存在于页面底端,不超过5个模块。
如果应用需要用户 频繁的在不同分页切换 ,可以采用这种导航,如上图微信最新版的APP界面设计图。这种导航栏符合拇指操作热区。
舵式导航(底部扩展式导航)
舵式导航是底部导航的一种扩展形式,是一种变体。因为它的样式很像轮船上用来指挥的船舵,两侧是其他操作按钮。
当页面有处于同一层级的几大部分内容,同时又需要一个非常重要且频繁操作的入口 ,就可以采用这种APP导航模式。 中间项标签不紧操作最频繁,最重要,且需要引人注意,方便寻找 。
左图为懒人听书App,右图为新浪微博手机客户端。两款App的主要功能都采用了舵式导航的布局方式,将操作最频繁的按钮进行特殊处理,在视觉设计上突出,与导航上的其他按钮进行区分,引导用户操作。
顶部导航+底部导航(双导航模式)
今日头条和网易新闻这种新闻类APP,由于内容、分类较多,运用顶部和底部双tab导航,而切换频率最高的tab放在顶部,这是为什么呢?因为新闻在每个tab都是沉浸式阅读,最常用的操作是在一个tab中不断地下滑阅读内容,将常用的tab放在顶部,向左或向右滑动切换tab的手势操作,能带来更好地阅读体验。
在两种情况下可以选择顶部tab式导航:某项功能必须固定在底部,那么其他tab只能固定在顶部,但为了方便操作,顶部tab导航最好支持手势操作,即滑动即可切换;该APP是沉浸式体验,如新闻、小说等,为了带给用户更好的阅读体验,可以将tab放在顶部。
实际上,底部Tab模式导航在iOS和Android上一直是最安全的一种导航模式,他不怎么出彩,但是绝对不会犯错。在大屏幕时代,底部Tab模式的导航更能适应,也更好设计。
适用于:
入口分类数目不多,可以控制在5个以内,且用户需要在入口间频繁切换来执行多个任务
注意:
结构太过复杂而且不稳定的应用不适合标签式导航。
抽屉式导航模式一般采用将导航主体隐藏在app侧边的方式,以一个按钮来呼出导航,在使用完成之后在使用相同的按钮隐藏起来。一拉一缩,从形象上与抽屉类似,因此称之为抽屉式导航。
抽屉式导航的核心思路是“隐藏”。隐藏非核心的操作与功能,让用户更专注于核心的功能操作上去。 设想你的产品信息层级有非常多的页面和内容,难以在一屏内显示全部内容,那么你一定首先会想到去设计一个底部或顶部的tab导航,但导航太多无疑显得臃肿,而且使用户难以点击,那么这个时候,抽屉式导航是个不错的选择。
抽屉式导航存在几个缺陷:
1.左上角的导按钮存在于单手拇指操作热区难以到达的位置,导致导航按钮难以触达;2.降低了用户对产品一半的参与度;3.可见性低。
有些人认为“现在的APP的发展不仅仅是从前单一的功能,功能随产品的发展变得越来愈多,抽屉式导航已经不适应大多数的产品,这种导航终将被遗弃”。但是,导航栏的使用方式并不是单纯随着看产品的功能增加而不被使用,而是随着整个产品的信息结构和功能形式来设计决定的。抛开产品的功能表现而去讲产品设计是不合理的。
何种情况下适合使用抽屉式导航:
1.如果应用主要的功能和内容都在一个页面里面。只是一些低频操作内容需要显示在其他页面里。为了让主页面看上去干净美观,可以把这些辅助功能放在抽屉栏里。
2.如果应用有不同的视图,且他们是平级的,需要用户同等地对待,抽屉栏将会浪费掉大多数的用户对于侧边栏中入口的潜在参与度和交互程度。
3.在大屏时代使用抽屉栏,手势操作显得尤为重要,从屏幕边缘唤出抽屉栏是个不错的选择。
注意:
需要用户有一定参与的信息层级,最好不好放置在抽屉栏
跳板/快速启动/宫格导航是将主要入口全部聚合在页面,让用户做出选择。
采用这种导航的应用已经越来越少, 往往用在二级页作为内容列表的一种图形化形式呈现,或是作为一系列工具入口的聚合。 如下图新浪微博,点击导航栏中间的发布按钮,弹出二级菜单,这个二级页面就是采用的宫格式导航,作为发布微博的入口。
这种导航模式非常常见,但是却不常用。
无论你用的是Android还是iOS,每天一打开手机,宫格式导航就会对你说hello了。
每一个APP都是一个宫格,这些宫格聚集在中心页面,用户只能在中心页面进入其中一个宫格,如果想要进入另一个宫格,必须要先回到中心页面,再进入另一个宫格。每个宫格相互独立,它们的信息间也没有任何交集,无法跳转互通。因为这种特质,宫格式导航被广泛应用于各平台系统的中心页面。
宫格式导航的缺陷 :
信息互斥,无法相互通达,只能给用户带来了更多的操作步骤。无法让用户在第一时间看到内容,选择压力较大。
何种情况下适用于宫格式导航:
适合入口相互独立互斥,且不需要交叉使用的信息归类
注意:
一旦入口需要有所交集,必然导致更多的操作负累,这个时候只能根据产品特性做出权衡,如果不适合,建议果断拒绝这种方式。
列表式导航结构清晰,易于理解,冷静高效,能够帮助用户快速的定位去到对应的页面。作为辅助导航来展示二级甚至更深层级的内容
列表式导航分为3类: 标题式列表、内容式列表、嵌入式列表。
标题式列表 :一般只显示一行文字,有的显示一行文字加一张图片等等。
内容式列表: 主要以内容为主,所以在列表中就会体现出部分内容信息,点击进去就是详情。
嵌入式列表: 嵌入式其实就是由多个列表层级组合而成的导航。能很好的解决次要功能非常多的问题
所有关于列表导航的例子大部分都是依附于标签导航之上的。前面我就说过现在以列表形式作为主导航的产品是越来越少,因为确实它不是一个好的主要展示形式。 列表项目可以通过间距、标题等进行分组,形成扩展列表。 列表菜单导航可以将重要的UI部分以列表的形式进行呈现,让用户可以滚动查看自己要执行的操作或内容。
而在二次层级上,它们还会 将列表分模块进行展示 ,如微信中“我的”模块“新消息通知、隐私、通用”是一组,“帮助与反馈、关于微信”又是一组。虽然你能看到,但是不仔细观察就不会发现其中的要点。只要善用这个细节,可以更好的加以区分次要功能,并提升用户体验度。
悬浮icon导航,是将导航页面分层,无论你到达APP的哪个页面,悬浮icon永远悬浮在上面,你依靠悬浮层随时可以去想要去的地方。
悬浮式icon会遮挡某些页面的操作,在设计的时候应该考虑进去,比如无论在那个页面永远为悬浮icon留有位置。
标签式导航: 最常用、最不易出错,请第一时间考虑它
抽屉式导航: 如果你的信息层级繁多,可以考虑将辅助类内容放在抽屉中
跳板式/宫格式导航: 不建议在APP中作为主导航使用,如果非使用不可,请增加跳转的关联性
列表式导航: 作为辅助导航来展示二级甚至更深层级的内容,每个APP必不可少,但请注意数量与分类
悬浮式导航: 更适应大屏的导航模式,不妨试一试,但注意不要让它遮挡住某些页面的操作
还是那句话,优秀的app导航设计,能够合理地完美展示产品的功能,并快速引导用户使用,增强用户的识别度。合理的导航设计,会让用户轻松达到目的而又不会干扰和困扰用户的选择。
感谢大家的耐心阅读,还有一路陪伴的行业大牛为我指点迷津!如果内容观点有不对的地方,欢迎批评指正!
‘陆’ 如何在android抽屉效果中显示自定义内容
本项目重点在界面特效上,主要就是做抽屉的拖动,抽屉中的gridview布局(注意不是所有gridview的item都一样的哦)以及带动画的弹出菜单popupwindow。
主要功能是实现对笔记数据的新建(主页面上),修改(单击gridview中的item),删除(长按gridview中的item),其中白色背景的item不能操作,只起到显示本月笔记总数的作用,这种效果主要是在gridview的适配器中的getView()方法中完成。
笔记数据的存储采用的xml格式,解析xml使用的是android自带的pull解析机制完成。读取使用XmlPullParser类,存储使用XmlSerializer类。
抽屉实习原理:默认时候抽屉显示在屏幕的中部位置,往上拖动能达到标题栏下面的位置。其实这个效果是完全用布局参数控制的,抽屉的根控件其实是一个LinearLayout布局,但是注意它的父控件必须是RelativeLayout或者是FrameLayout,我使用的相对布局,这样通过动态改变抽屉的相对布局参数就可以实现抽屉的移动。当然实现拖动效果少不了使用到onTouch事件,在down,move,up事件中做处理就可以实现想要的效果。
//取得抽屉的相对布局参数
RelativeLayout.LayoutParamsparam=(RelativeLayout.LayoutParams)slidigLayout.getLayoutParams();
//动态调整抽屉的位置
slidigLayout.setLayoutParams(param);
第二个是模仿ViewPager实现屏幕切换效果,并且支持标题指示器。我使用了开源的ViewFlow项目 来改编的。具体效果