InstaMaterial 概念设计(4):新闻item的上下文菜单

787 查看

这篇文章是实现Material 风格的INSTAGRAM 系列文章第第四部分。今天,我们将为新闻的item创建一个从“motre”按钮打开的上下文菜单。大约是视频18 到 20 秒之间的内容。

下面是今天所要达到的效果(分别是Lollipop以及Lollipop之前的效果):

视频暂略

先热身

在我们开始菜单的实现之前,我们先重构以下代码。

Riyaz在评论中指出MainActivityCommentsActivity中的Toolbar是完全一样的,因此可以单独新建一个布局,使用<include />标签来导入以达到重用的效果。

重构之后大概长这样。这个新建的布局文件在res/layout/view_feed_toolbar.xml中:

view_feed_toolbar.xml

现在我们只需在activity_main.xmlactivity_comments.xml中如下使用它就可以了:

activity_main_include.xml

值得一提的是我们可以在<include />标签中重写一些属性(重写将会覆盖被包含文件中根视图的相关属性),就如上面已经重写了的android:id属性。(顺便说下这里Toolbar需要放在RelativeLayout中,ps:真啰嗦啊,说了几次了。)

这里是 提交 的重构代码。

上下文菜单

准备工作

在开始代码之前我们先做一些准备工作,下面是期望的效果截图:

首先,在item_feed.xml中添加一个按钮,并处理其onClick()事件。这不难,只要将以前的一些代码拷贝过来,再添加一个三个圆点的图片(我用的是从官方Material Design图标包中弄来的 这个图标 )。这里是 提交 的这些更改的代码。

上下文菜单(Context menu)的布局

让我们从view的布局开始吧,我们再一次使用<merge /> 标签,然后在xml和java代码中构建

res/layout/view_context_menu.xml:

其实就是四个共用如下样式的按钮:

很简单吧,java代码也同样简单: