Android官方文档阅读01-多屏幕适配&Fragme

2017-01-07  本文已影响55人  sugaryaruan

Supporting Different Screen

安卓多屏幕适配 传送门

安卓的屏幕适配以前一直是个重要的话题。这些适配技巧固定,渐渐的不再成为大家讨论的焦点了

通过安卓项目提供的特性适配多屏幕.分类处理,针对不同的手机屏幕情况,给出不同的参数设置文件
引入dip(dp)距离单位,该单位与像素密度相关,而与屏幕像素没有直接关联。像素密度和分辨率决定了一个屏幕的尺寸大小

Fragment实现DynamicUI

传统官方的Fragment和Activity之间的通信方式

通信:Framgnet出一部门内容,Activity出一部门内容,把这两部门内容合在一起处理

通信一:如何实现Activity对Fragment的通信
  1. setArgument()把数据传入fragment
  2. 在Activity里,持有Fragment对象,调用Fragment的方法
通信二:如何实现Fragment对Activity的通信

通过接口回调,Activity实现接口,实现赋值到fragment里

如何实现在同一个Activity里,Fragment与Fragment之间的通信

Fragment先和Activity通信(使用通信二);然后Activity再与另一个Fragment通信(使用通信一)。这样就实现了Fragment之间的通信

RxBus/EventBus实现组件间解耦

使用上述传统Fragment和Activity通信方式的书写繁琐,耦合程度较高,尤其Framgent里还有列表控件(RecyclerView,ListView等)的Adapter类里的点击响应和Fragment、Activity之间的交互,就更现繁琐,逻辑跳转多,维护性降低。

为此,目前安卓项目中广泛使用的EventBus/RxBus有效解决了这个问题,其中RxBus得到了EventBus作者的推荐和肯定,Rx响应理念也越来越盛行,推荐使用RxBus

Share Simple Data

通过Intent,实现了单个App内四大组件的通信以及App间的通信。某个App内容分享到另一个App,也正是利用Intent把数据传过去。

比如,我把在新闻看到的App内容通过邮件App发送给我的好朋友,怎么实现?

首先要对Intent页面跳转有了解,可以阅读这篇官方文档 Intent和Intent过滤器。Intent分显示和隐式,显式用在App内启动Activity和Server,隐式用在启动其他应用的组件。

该文阅读后,注意事项:

发送方通过Intent的键值存储数据,接收方从Intent根据之前存入的键取出数据,因此需要统一键的内容。发送方和接受方在我举的例子里,新闻类App是发送方,邮件是接收方,相互之间不知道对方,这个键的内容一致怎么约定呢?这个约定Android系统做了。

Intent类下有很多静态常量,其中Intent.EXTRA_xxx系列就是各种约定的键内容。关于Intent跳转的组成数据和用法,详细看这篇

代码实现如下:

Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_EMAIL,new String[]{"sugaryaruan@gmail.com","sugarya@foxmail.com"});
    intent.putExtra(Intent.EXTRA_SUBJECT,"我是分享标题");
    intent.putExtra(Intent.EXTRA_TEXT,"我是分享内容....");
    if(intent.resolveActivity(getPackageManager()) != null){
        startActivity(Intent.createChooser(intent,"Share via"));
    }
上一篇 下一篇

猜你喜欢

热点阅读