Android的一些小知识

索引

1. Android Html.fromHtml

当我们想要用TextView展现一段html代码时会用到这个方法 在API Level 23或之前的设备可以使用**Html.fromHtml(String)** 这个过时的方法, 但在API Level24及以上的设备要使用 **Html.fromHtml(String source, int flags)**

eg:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            tv_title.setText(string, Html.FROM_HTML_MODE_LEGACY));
        } else {
            tv_title.setText(Html.fromHtml(string));
        }

其中的flags表示:
FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔

2. 注释语法

@link语法
适合在你的注释中引用任意一个类、字段或者方法。


> /**
 * 这里要引用一个类 {@link package.MyClass} <br/>
 * 这里要引用一个类里面的子类 {@link package.MyClass.SubClass}<br/>
 * 这里要引用一个类里面的方法 {@link package.MyClass#method(Context, Object)} // 注意这里()里面的是方法的参数类型,使用不同的参数签名可以来区别不同的重载方法 <br/>
 * 这里要引用一个类李曼的字段 {@link package.MyClass#field} // 这里不区分字段是否是public 或者 static,都可以直接引用 <br/>
 * 这里要引用改类本身的方法或者字段 {@link #method(Context, Object)}和{@link #field}
 */

使用这个替代注释中直接写上的类名和方法名!!!**这样查看注释能用IDE直接跳转你引用的地方,并且若重构了引用的类、方法或者字段的名称,IDE也会自动替换这个地方的名称~ **

@param语法
适合给方法的参数写说明


> /**
 * 这是方法的说明
 * @param param1 这里是参数1的说明
 * @param param2 这是是参数2的说明
 */
void method(int 参数1, int 参数2) { }

用这个语法可以简单为方法参数加一些说明,比如说明一些特殊值的传入等~~

3. ndroid:state_activated

setActivated(boolean activated)传入一个布尔值,如果设置为ture,那么这个项目应该在**对象被持久选择时**使用(如对象的高亮状态),否则应该在对象没有被激活时使用这个状态。 所以,如果遇到需要展示**2个或者2个以上获取焦点的View的界面**,不妨使用此方法

4. 泛型

所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。

泛型使用:
1、直接使用
2、设置类型上限<? extends Number>

参考:Android使用泛型介绍

5. android:scaleType

android:scaleType是控制图片如何resized/moved来匹对ImageView的size。 ImageView.ScaleType / android:scaleType值的意义区别: **CENTER /center** 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示 CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽) **CENTER_INSIDE / centerInside** 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽 FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示 FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置 FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置 FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示 MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。

6. android-getSupportFragmentManager和getFragmentManager的区别

getSupportFragmentManager()主要用于支持 3.0以下android系统API版本,3.0以上系统可以直接调用getFragmentManager() ,因为fragment是3.0以后才出现的组件,**为了这之前的系统版本也能使用fragment**,借助V4包里面的getSupportFragmentManager()方法来间接获取FragmentManager()对象,3.0版本之后,有了Fragment的api,就可以直接使用getFragmentManager()这个方法来获取对象。

当api>=14时,使用getFragmentManager(),有时候使用Fragment的时候为了兼容低版本,会引入android-support-v4.jar支持包,这个时候,需要使用getSupportFragmentManager()。

7. commitallowingstateloss 和commit的区别

commit:安排该事务的提交。这一承诺不会立即发生;它将被安排在主线程上,以便在线程准备好的时候完成。不允许活动状态丢失。

commitAllowingStateLoss:与 commit类似,但允许在活动状态保存后执行提交。这是危险的,因为如果Activity需要从其状态恢复,那么提交就会丢失,因此,只有在用户可以意外地更改UI状态的情况下,才可以使用该提交。

在使用fragment时的报错:
Can not perform this action after onSaveInstanceState

为什么我们会有这种报错呢,因为我们在使用add(),remove(),replace()等方法将Fragment的变化添加进去,然后在通过commit去提交这些变化(另外,在commit之前可以去调用addToBackState()方法,将这些变化加入到activity管理的back stack中去,这样用户调用返回键就可以回退这些变化了),提交完成之后这些变化就会应用到我们的Fragment中去。但是,这个commit()方法,你只能在avtivity存储他的状态之前调用,也就是onSaveInstanceState(),我们都知道activity有一个保存状态的方法和恢复状态的方法,这个就不详细解释了,在onSaveInstanceState()方法之后去调用commit(),就会抛出我们遇到的这个异常,这是因为在onSaveInstanceState()之后调用commit()方法,这些变化就不会被activity存储,即这些状态会被丢失,但我们可以去用commitAllowingStateLoss()这个方法去代替commit()来解决这个问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值