Android开发最佳实践

  1. Intent intent = new Intent(Intent.ACTION_XXX);

  2. ComponentName componentName = intent.resolveActivity(getPackageManager());

  3. if(componentName != null) {

  4. String className = componentName.getClassName();

  5. }

2)使用NotificationCompat兼容包来处理消息通知


为了解决Android系统版本差异导致的Notification兼容性问题,Android官方提供了NotificationCompat兼容类来帮助开发实现体验统一的Notification。通常来说,建立一个Notification至少会有三种元素:图标,标题,文本。我们通常会使用如下的代码来实现一个基础的Notification功能:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面那段代码,运行时候的效果应该如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了给上面的Notification添加点击之后的响应效果,我们还需要构造一个PendingIntent作为contentIntent,例如:

[java]  view plain copy

  1. PendingIntent intent = xxx;

  2. builder.setContentIntent(intent);

为了使得Notification更加的具有辨识度,我们还有可能做如下的设置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从Android 4.1开始,Notification可以支持展开显示的模式,这样一来,Notification就演变出了下面4种不同的风格样式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Notification还提供了快捷操作的功能,如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

除了显示在手机上的Notification,我们还可以给Notification分别设置在Wearable,Auto上的不同表现行为,例如针对可穿戴设备上显示Notification,我们可以如下的设置:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于更多的Wearable上的Notification相关的知识,还可以参考 Pages of Content与 Stackable Notifications

3)Android 6.0 Marshmallow的运行时权限


Android 6.0开始引入了新的运行时权限检查授权机制,替代了之前安装应用的时候对权限进行授权的方案。为了避免6.0及以上的机器运行发生运行时异常,我们需要做到至少以下5个步骤:

  • 检查系统版本号:针对6.0以下的系统版本,默认权限在安装的时候已经获取到了,对于6.0开始的版本,才需要做运行时的权限检查。

  • 检查申请的权限:在使用某个权限之前,需要检查权限是否已经获取到了。

  • 解释申请的权限:在权限没有获取到的情况下,需要通过shouldShowRequestPermissionRationable()的判断来决定如何给用户进行提示。

  • 执行申请权限操作:前面判断没有获取到权限,为了能够让功能顺利执行,我们会需要在代码里面再次执行申请此权限的操作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 处理权限申请的结果:申请权限之后,我们需要处理申请的响应结果,分别处理权限申请成功与失败的情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4)使用MediaSessionCompat操作音乐的播放


MediaSessionCompat来自Android官方的兼容包,通过它可以告诉Android系统与其他的应用,自己正在播放的内容是什么以及自己支持哪些类型的播放控制:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在Android的官方培训课程中有介绍过关于 Media Button Receiver的概念,Android系统会把来自蓝牙控制器或者是耳机等其他设备的操作事件转换成Media Button事件传递出来,如果我们的应用程序需要监听这些事件并做出相应的响应,就需要注册MEDIA_BUTTON的action,接收到这些事件之后,再传递给音乐播放模块进行控制处理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基于上面的认知,我们现在演示如何使用MediaSessionCompat,下面演示了如何构造一个MediaSessionCompat以及构造完之后通常需要做的三件事情:设置合理的flag,设置回调(在5.0开始会响应onPlay,onPause等等回调),设置激活。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

搭建好了MediaSessionCompat之后,还需要通过MediaMetadataCompat来传递播放的资料信息,通过PlaybackStateCompat来传递播放的状态信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

做了上面那些操作之后,MediaSessionCompat的任务就算是完成了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5)使用Toolbar替代ActionBar


自从MaterialDesign开始,Android官方就开始使用Toolbar替代了原来的ActionBar,现在Toolbar已经加入Support兼容包。Toolbar是一个相比起ActionBar更加丰富,更加灵活的组件,另外它的布局本身还是View Hierarchy的一部分,这就意味着可以对Toolbar执行动画操作,增加点击滑动事件等等,甚至我们还可以在一个页面里面加入两个Toolbar。

为了启用Toolbar,首先要做的事情就是关闭当前Activity的ActionBar。我们可以通过使得Activity的主题继承Theme.AppCompat.NoActionBar,然后在对应的XML布局文件中,添加类似下面的toolbar布局信息:

[xml]  view plain copy

  1.   
  2. <android.support.v7.widget.Toolbar

  3. android:id=“@+id/toolbar_layout”

  4. android:layout_width=“match_parent”

  5. android:layout_height=“wrap_content”

  6. android:layout_alignParentTop=“true”

  7. android:minHeight=“?attr/actionBarSize”>

  8. </android.support.v7.widget.Toolbar>

在布局文件中添加Toolbar的信息之后,需要启动Toolbar替代ActionBar,需要像下面一样做设置:

[java]  view plain copy

  1. @Override

  2. protected void onCreate(Bundle savedInstanceState) {

  3. super.onCreate(savedInstanceState);

  4. setContentView(R.layout.activity_main);

  5. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_layout);

  6. setSupportActionBar(toolbar);

  7. }

关于更多Toolbar的细节,请参考官方文档https://developer.android.com/reference/android/support/v7/widget/Toolbar.html

6)使用AppBarLayout并处理滑动手势


AppBarLayout是一个在android.support.design兼容包(这里有关于该兼容包的 官方博客介绍)里面的新推出的组件,它是一个垂直方向的LinearLayout,包装了很多Material Design的设计元素,例如滑动手势的处理。我们可以使用app:layout_scrollFlags这样的标签来设置滑动的行为表现。关于App Bar,官方还有这样一段描述:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用AppBarLayout需要注意下面几个要点:

  • 首先,AppBarLayout必须作为CoordinatorLayout的直接子View;

  • 其次,在AppBarLayout里面必须包含一个ToolBar;

  • 最后,在CoordinatorLayout里面可以添加那些可以滑动的组件,例如RecyclerView。

一个标准的布局文件应该是类似下面结构的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们需要注意,在Toolbar里面设置的layout_scrollFlags会影响到滑动之后的显示效果,请看下面的具体解释:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7)使用SearchView来实现搜索功能


关于在使用搜索的时候及时显示给用户的候选词,会需要根据数据的类型以及具体的情况做不同的处理,这里先暂时不讨论那一块的内容。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面的图示已经清楚的演示了使用SearchView处理搜索的通常情况,关于如何实现这个功能,需要做到以下几个步骤:

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

《507页Android开发相关源码解析》

因为文件太多,全部展示会影响篇幅,暂时就先列举这些部分截图

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

…(img-RWt62lLo-1714205081781)]

因为文件太多,全部展示会影响篇幅,暂时就先列举这些部分截图

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值