自定义SearchView的搜索提示
SearchView除了提供输入和提交搜索的界面,还能够根据输入显示对应的搜索提示。本文以搜索历史记录为例,介绍自定义Android搜索提示的方法,如图1所示。 1. SearchRecentSuggestionsProvider 首先要创建自己的SearchRecentSuggestionsProvider,用于保存和查询搜索记录。 1.1 创建SearchRecentSuggestio…
Read more
learn, build, evaluate
SearchView除了提供输入和提交搜索的界面,还能够根据输入显示对应的搜索提示。本文以搜索历史记录为例,介绍自定义Android搜索提示的方法,如图1所示。 1. SearchRecentSuggestionsProvider 首先要创建自己的SearchRecentSuggestionsProvider,用于保存和查询搜索记录。 1.1 创建SearchRecentSuggestio…
Read more
App Widget可以使用RemoteViewsService来展示集合数据,下面在Android App Widget实现举例的基础上,创建一个电影海报列表的Widget,效果如图1所示。 1. 创建布局 App Widget可用的Collection View有一下几种: ListView GridView StackView AdapterViewFlipper 这里使用Sta…
Read more
在创建App Widget时,经常需要下载图片资源并显示到Widget上,下面给出几种下载并在RemoteViews中显示图片的方法。 1. 直接下载 直接下载图片会比较耗时,注意不要放在Main Thread。对于更新Widget的场景,可以在IntentService中下载并显示图片。 URL url = new URL(imageUrl); HttpURLConnection con…
Read more
App Widget是可以嵌入在其他应用(通常是主屏幕)的小型应用,接受定时的更新。创建一个App Widget,至少需要: AppWidgetProviderInfo:使用xml描述Widget,如Widget的尺寸、布局、更新频率等。 AppWidgetProvider:定义了与Widget进行交互的基本方法。 View Layout:Widget对应的布局。 下面通过一个例子说明如何…
Read more
barcodescanner是一个基于ZXing和ZBar的条码扫描View,使用起来非常简单和方便。 1. 安装 首先在build.gradle加入依赖: compile 'me.dm7.barcodescanner:zxing:1.8.4' 2. 加入相机权限 在AndroidManifest.xml中加入相机权限: <uses-permission an…
Read more
在一些包含敏感消息的应用中,希望能够禁用系统的截图功能,方法很简单,只需使用FLAG_SECURE 即可: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams…
Read more
ContentProvider将数据封装起来,对外提供统一的接口,使得对数据的访问独立于数据的存储方式(文件、数据库等)。ContentProvider还提供跨应用的数据访问能力,并可以通过Search Framework实现自定义的搜索建议。可以参考这里来决定是否使用ContentProvider。 下面例子在RecyclerView使用方法举例(1)的基础上,展示ContentProv…
Read more
RxAndroid是RxJava在Android上的扩展。在Retrofit 2使用方法举例中,使用了Call<T> 的形式定义接口,此外也可以使用自定义类型如MyCall<T> ,Retrofit通过CallAdapter来适配不同的接口类型。Retrofit 2提供了RxJavaCallAdapterFactory,可以同来适配RxAndroid。 下面的例子在…
Read more
动画效果不仅可以使得应用更加吸引人,更可以突出变化的内容,使得用户能够更好地理解应用的操作和运作方式。Android提供了Transitions Framework来为View层级之间的切换添加过渡效果,最低需要API level 19。下面通过一个例子说明如何 添加过渡动画。 例子以在Android上实现Master/Detail Flow为基础,最终实现效果如下: 1. 添加Trans…
Read more
Master/Detail Flow包含Master和Detail两个页面,Master页面显示包含了若干项目(item)的列表,给出各个项目的大概信息。当点击某个项目时,包含了该项目详细信息的Detail页面会显示出来。这种模式的一个优势在于,可以方便地适配不同的屏幕尺寸:手机屏幕尺寸有限,一般一次只能展示一个页面,那么首先显示Master,当用户点击感兴趣的项目时,再将该项目的Detail…
Read more