Android Material 搜索框实现详细说明

本文讲的是Android Material 搜索框实现详细说明,



关于我的应用,我收到了一些用户的反馈,他们反馈最多的是缺少搜索功能。对于像 Memento Calendar 这种囊括了诸如社交时间,纪念日,银行休假日,信息来源错综复杂的应用,我很赞同搜索是这个应用最重要的功能之一。问题是这个功能已经被实现了。Toolbar 里的一个搜索图标引导用户到一个搜索界面。

A user can search by tapping the search icon on the Toolbar

我决定调研一些用户来看看问题究竟是什么。在和这些幸运的用户通过邮件往来交流了一番后,我总结出下面的内容:

人们似乎更加习惯于其他流行应用中的搜索栏,例如 Facebook,Swarm 以及其他的应用。在上述的应用中,搜索栏可以直接通过 Toolbar 访问到,这意味着用户可以从主界面开始搜索。

因为搜索的逻辑已经在应用里实现了,我有充裕的时间来尝试使用 Android 的动画 API 为我的应用增添生气。

试验的进程

这个点子是利用 transition 来衔接已经包含搜索栏的主界面,以及拥有神奇搜索功能的搜索界面。

从一个视图设计的角度,我想要这个 transition 尽可能的相似以便于用户可以聚焦于搜索,感觉不到他们正在看一个新的界面。从一个视图开发的角度,两个界面(Activities)不得不保持分离。每一个 Activity 处理它们自己的事务,从维护的角度来说把它们联合在一起完全是一个噩梦。

因为这是我第一次使用 Transition,我不得不做一些阅读。我觉得 Nick Butcher 和 Nick Weiss 的
有意义运动的谈话视频对我理解新的 API 是怎样工作的很有帮助,并且这个视频里的幻灯片曾经是(现在仍然是)我处理 Transition 相关内容的核心备忘单。

一个类似于我想要实现的特效可以在Android 手机应用市场里被找到。一旦用户点击了搜索栏,当前的界面就会逐渐消失,搜索栏变大,用户可以开始搜索了。

The transition as seen in the Dialer app

不幸的是这个应用的实现跟我预期的完全不一样。所有的事情都是在一个单独的 activity 里完成的。即使这确实行得通,但我不喜欢把几个功能结合在一起,我希望在未来可以更加灵活的更新应用的设计。虽然这个实现不完全是我想要的,但是关于下一步我该怎么走,我从中获得了一个好主意。

我把期望的 transition 分解成三个简单步骤:

1) 让 toolbar 的内容渐隐

2) 把 toolbar 框变大

3) 让内容逐渐显示回来。

这些步骤可以很容易的通过 TransitionManager 类来实现。通过简单调用 TransitionManager.beginDelayedTransition() ,然后修改这个视图的属性。这个框架会自动的把这些改变应用到视图里。这对搜索栏的扩展和折叠都起作用。渐隐的效果也是用这种方式实现的,但是我们所做的却是正在改变多个视图的可视性。现在唯一欠缺的事是如何在一个操作步骤里实现无缝隙地跳转到搜索 activity。

幸运的是,我记得在一个 Android 开发者视频里见过类似的东西。在名为 DevBytes: Custom Activity Animations 的视频里 Cheet Haase 展示了在 activity 开始或是结束的时候如何覆写系统的动画。最后一点,这点也很重要,我们可以对这个Transition 进一步的修饰让它进行的更快,在 Transition 一开始的时候就显示出键盘。实现这个的简单方式是在应用的 Manifest 文件里声明正确的 windowSoftInputMode。通过这种方式,当第二个 activity 开始的时候键盘就变得可见了。

最终的结果

综上所述,下面的结果被实现了。

The transition as seen in Memento Calendar

你可能想知道这个设计决定是否真的有效。我对这个设计很满意,因为它为我的应用带来了额外的 30% 搜索量。这可能意味这个设计让用户更易于搜索,也可能用户喜欢这个动画效果。



还有一些细微的 UX 提升还可以去实现来达到一个更好的效果,例如返回按钮图标的颜色,或者是当用户返回的时候,如果没有在搜索栏里填入搜索内容,就把 activity 结束掉。如果你对学习如何实现此类的效果感兴趣的话, Memento Calendar 是开源的 你可以来看看这个应用里这块内容的实现原理。

作者:siegen
链接:http://www.jianshu.com/p/24dff5073e2c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。





原文发布时间为:2016年11月03日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-08-31 04:39:31

Android Material 搜索框实现详细说明的相关文章

Android SearchView搜索框组件的使用方法_Android

SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索. 本文就为大家分享了SearchView搜索框组件的使用方法,供大家参考,具体内容如下 效果: 代码SearchActivity.java package com.jialianjia.bzw.activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.

Android SearchView搜索框组件的使用方法

SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索. 本文就为大家分享了SearchView搜索框组件的使用方法,供大家参考,具体内容如下 效果: 代码SearchActivity.java package com.jialianjia.bzw.activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.

Android EditText搜索框实现图标居中

类似这样EditText 搜索框,hiht 提示有一个icon并且text内容. 重写EditText : package mobi.truekey.weapp2.widget; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.dr

Android中如何实现清空搜索框的文字_Android

需求:项目中的有关搜索的地方,加上清空文字的功能,目的是为了增加用户体验,使用户删除文本更加快捷 解决过程:开始的时候感觉这个东西不太好实现,主要就是布局的问题,可能是开始顾虑的太多了,再加上当时产品催的不太紧,而且这个功能也不是必须实现的.但是今天不一样了,这个是老大让加上的,说别的很多应用中都有这个功能,没办法那就加上呗,试着去使用了相对布局去实现,把一个删除按键放在编辑框的右上方,当文字的时候就把删除按键给显示出来,当编辑框为空的时候就把删除按键给隐藏掉.布局代码 <?xml versio

Android实现简单实用的搜索框

本文实例为大家分享了Android实现搜索框展示的具体代码,供大家参考,具体内容如下 展示效果 代码区 SouActivity public class SouActivity extends AppCompatActivity implements TextWatcher{ @BindView(R.id.app_sou) EditText appSou; @BindView(R.id.app_sou_list) ListView appSouList; @BindView(R.id.activ

Android开发之搜索框自动提示细节MatrixCursor学习

1,在ActionBar里面加入搜索框 在ActionBar里面加入搜索框是现在APP应用的常用做法.要想把搜索做好,可不是那么容易.涉及到自动提示和真正的搜索.下图是我对一个相对完整的搜索框涉及的元素关系做了一个图,箭头只表示它们之间有关系,不是类图中的继承. 一个Activity会有一个ActionBar,默认情况下.你可以在ActionBar里面添加菜单条目.菜单条目可以设置标题,图标以及关联的ActionView,这里我们关联了一个SearchView.SearchView和Search

Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框

一.前言     继续AndroidUI系列,泥瓦匠又要开始扯淡了.哈哈今天在文章头加了个支付宝账号.我也真逗,至今没收到一笔是写博客的钱.或是分享的.泥瓦匠也就挂着逗逗乐而已.笑着就笑吧,我也在笑了.     和我的师傅扯着蛋.也教授了泥瓦匠很多东西.泥瓦匠一直在学习,一直在进步而已.这是师傅送我的话: 睡少点,玩少点,分清主次拍优先级.还要发挥同伴的能力,不是什么事情都要自己做的. 二.正文     今天要讲的内容很多.还是主要大家去看代码吧.我把主要的东西,介绍下.然后给源码自己参透吧.下

Angularjs material 实现搜索框功能_AngularJS

angular-material 是 AngularJS 的一个子项目,用来提供实现了 Material Design 风格的组件. Material 提供了大量的android 风格的UI组件,使用 angularjs + Material 可以很容易开发出风格接近原生 Android 5.x 的web界面.但在实际使用的过程中并不总是能满足我们的需求.开发一个组件就成了我们必须学习的内容. 下面是一个组件的实现: //前面省略若干代码 directive('mdSearchInput',[f

Android仿简书搜索框效果的示例代码

前言 之前用简书的时候一直是在web端,后来下载了客户端,看到了搜索的那个动画,就尝试的去写了,没写之前感觉挺容易的,写了之后,就感觉里面还是有些要注意的东西的.话不多说,直接上图. Activity 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo