android training英文,Android Training

Getting Started

1.Build your first app

1.给DisplayMessageActivity新增点击返回MainActivity

android:parentActivityName=".MainActivity" >

android:name="android.support.PARENT_ACTIVITY"

android:value=".MainActivity" />

2.Autoconnect会帮你添加约束

3.使用Pixel XL作为Preview

4.Default Margins设为16

5. Chain > Create Horizontal Chain

A chain is a bidirectional constraint between two or more views that allows you to lay out the chained views in unison

6.Match constraints:意味着宽度扩展以满足水平约束和边界的定义(类似LinearLayout weight)

5333595598a9

image.png

2.Supporting Different Devices

1.Arabic or Hebrew 阿拉伯语或希伯来语使用RTL

2.适配多语言:-b+[+] eg:

values/

strings.xml//默认英文语言

values-b+es/

strings.xml//西班牙的语言

3.适配横屏:layout-land 适配大屏:layout-land 适配横屏和大屏:layout-large-land

4.兼容不同Android版本:Build.VERSION.SDK_INT运行时获得当前的版本

在xml中如果当前手机不支持某个属性的话会自动忽略

3.Building a Dynamic UI with Fragments

1.FragmentActivity 是为了解决Android11以前使用Fragment的

2.AppCompatActivity是FragmentActivity的子类

3.当FragmentTransaction.commit之前调用了addToBackStack(),Fragment被remove的时候不会destroy而是stop,按back键回退的时候,restart

4.Interacting with Other Apps

1.隐式意图要么使用Uri,要么setType设置MIME决定哪些app能接受这个intent

2.使用隐式意图时,如果手机里面没有app可以接收,那么会crash,所以发送之前需要验证:

PackageManager packageManager = getPackageManager();

List activities = packageManager.queryIntentActivities(intent,

PackageManager.MATCH_DEFAULT_ONLY);

boolean isIntentSafe = activities.size() > 0;

intent.resolveActivity(getPackageManager()) != null//验证这个intent会有至少有一个app能接收

3.使用隐式意图时,如果手机里有多个app可以接收,那么系统会弹出一个弹窗让用户选择,但是下次会默认使用选择的app来接受同样的intent

使用Intent.createChooser(intent, title),可以让用户每次都会选择可以接收intent的app

4.Android 2.3以前读取联系人必须获取READ_CONTACTS权限、但是2.3以后联系人app会给你一个临时权限去查询指定的联系人(通过Intent.Uri)

,如果想要查询除了指定联系人以外其他联系人的信息,那就必须要获取READ_CONTACTS权限

Data标签可以指定MIME、URI prefix、URI scheme或者这些组合

5.为了能让Activity 接受隐式意图,必须设置category 标签为ca'tegory_default

6.在外部存储中,为了让系统能够识别你的文件,你需要使用API constants eg:DIRECTORY_PICTURES,系统就会扫描到这个文件夹里的文件为照片

7.getFreeSpace() 返回剩余空间容量,但是你不能写刚好那么多容量的文件。会报错

8.app卸载时,外部存储的getExternalFilesDir()和所有的内部存储都会被删掉

Saving App Data

1.commit()是同步的,apply()先把改变保存到内存中的SharePreferences然后异步的保存到磁盘,就算保存失败也不会有通知。

2.如果apply()在异步保存的同时,又调用了editor的commit(),那么commit()会被阻塞,直到所有的apply()执行完成!

3.Framework层会确保apply()在切换声明周期时之前调用完

4.manifest中使用android:installLocation 来指定app安装的位置(默认内部存储)

5.目前而言所有app都有read外部存储的权限(不用声明都行、但是在将来的版本会改变)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值