Android知识点1

1.适配7.0 Uri

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
    StrictMode.VmPolicy.Builder builder=new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());
    builder.detectFileUriExposure();
}

2.初始权限申请和网络请求

3.图片预览功能阶梯:

手势缩放,滑动翻页,旋转,裁剪
缩放定位,压缩

4.64K方法数限制

defaultConfig {
  multiDexEnabled true
}
compile 'com.android.support:multidex:1.0.1'

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

5.使用弱引用关闭Activity

6.无标题栏主题样式

7.启用Dagger2-android

8.主项目引用库自定义控件无法提示问题:compileSdkVersion和targetSdkVersion版本号不一致

9.不可滑动的ViewPager

10.高斯模糊

renderscriptTargetApi 19
renderscriptSupportModeEnabled true 

compile 'com.github.mmin18:realtimeblurview:1.1.0'

<com.github.mmin18.widget.RealtimeBlurView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:realtimeBlurRadius="20dp"
    app:realtimeOverlayColor="#8000" />

11.DataBinding引用资源

12.RecyclerView多条目类型

13.OkHttp下载文件

14.Glide4.0

15.Drawable红鲤鱼动画

16.PopupWindow工具类

17.键盘开启、关闭、关闭监听、键盘顶起界面

18.TextInputLayout右侧鱼眼

19.TextView图标点击事件

20.EditText显示密码可见不可见
etPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
etPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

21.自定义View+DataBinding事件绑定

22.EditText不可编辑可点击:

android:focusable="false" //不可获取焦点
setKeyListener(null);//不弹出键盘

23.FlexboxLayout

24.RxJava异常处理

25.Window设置背景透明度

26.PopupWindow的showAsDropdown的xOff是已ancherView左下角为基础,左移时要加上ancherView宽度

27.父控件抢占EditText焦点:

android:focusable="true"
android:focusableInTouchMode="true"

28.动画3D翻转和NineOldAandroids

29.百度地图

30.相册模块多配置,相机模块

31.自定义Badge,把它动态添加到View的右上角:
计算字数为1时边距大小

32.更好用的BadgeView库,compile ‘q.rorbin:badgeview:1.1.2’

33.自定义Drawable:

1.不能单独以标签的形式在xml里使用,必须依附于其他控件
2.无自定义属性
3.无measure
4.专注绘制,比View,ViewGroup轻量
5.继承Drawable,setImageDrawable

34.lib导入arr

35.导入arr版本要求高

36.PopupWindow设置阴影

37.Tab和List框架

38.读取assets文件夹下内容

39.透明Activity


40.Acvity切换动画

starter.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
overridePendingTransition(0, 0);

41.IDE无法提示—>Clean Project

42.App启动:启动耗时,首屏白屏

43.ViewPager:控制滑动翻页,无限轮播,双向轮播,缩放复位,获取当前项

44.AppBarLayout,CollapseLayout,视差效果,折叠头部

45.ScrollView嵌套RecyclerView内容展开

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</RelativeLayout>

46.使用DBFlow存储搜索历史记录

47.软件盘设置搜索建,并监听,防止两次调用

android:imeOptions="actionSearch" 
android:singleLine="true"   
setOnKeyListener
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
                    search();
                }

48.Retrofit请求参数为对象

49.ScrollView滚打底部

scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部

50.ScrollView中的EditText设置为被键盘顶起

android:windowSoftInputMode="stateHidden|adjustPan"

51.Retrofit的fullPath,即在接口Sercice中把整个@Path作为参数传入,普通使用会把/进行Url参数编码,无法使用

@FormUrlEncoded
@POST("{fullPath}")
Single<BaseEntity<HomeFirstBean>> homePage(@Path(value = "fullPath", encoded = true) String fullPath)

52.常用转义字符

&  -->  &amp;
<  -->  &lt;

53.GridLayoutManager设置等间距分割线

54.自动计算GridLayoutManager分割间距

55.EditText设置自定义输入限制过滤器,如金额首字母不能为零,最多两位小数,setFilters();

56.SpannableString文字大小和颜色,添加图标,图标竖直居中

new ForegroundColorSpan(0xFF999999)
new AbsoluteSizeSpan(12, true)
new CenterVerticalImageSpan(this, R.drawable.public_moredown)

57.TextView判断点击文本位置SpannableString设置ClickableSpan去掉默认下划线,同时设置字体颜色

binding.tvOpenWallet.setMovementMethod(LinkMovementMethod.getInstance());

58.身份证识别->光学识别

59.百度光学识别->身份证识别

60.Databinding的include

61.WebView和js交互,java调用JS函数

62.TextView设置Drawable

Drawable drawable = activity.getResources().getDrawable(R.mipmap.mall_selected_icon);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
tv.setCompoundDrawables(null, null, drawable, null);

63.RecyclerView的GridlayoutManager,的间距问题,右边不留空,不可解决

64.RecyclerView嵌套ScrollView禁止滚动
布局管理器方法

@Override
public boolean canScrollVertically() {
    return false;
}

65.DBFlow:同步批量处理,异步批处理,批处理监听

66.聊天列表时间显示隐藏规则

67.ViewPager判断是否可见:
setUserVisibleHint()

68.WheelView-3D

69.RecyclerView添加Footer,并适配瀑布流

70.混淆终于成功,混淆不要看warn日志,从项目的几个方面入手,进行。实在不行采用逐步缩紧的方式进行。

71.引入的.so库支持的cpu类型必须一致,删除一种cpu制式时要删除所有涉及的库和总应用。

72.RxJava使用zip来控制多个并发请求同时响应完成之后再处理界面

73.Android WiFi ADB无限调试

74.Retrofit+RxJava+文件上传进度封装

75.快速定位当前文件所在位置:点击目录栏上方的准星

76.关于系统导航栏:

判断是否有实体键:

boolean hasMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

获取导航栏高度:

int identifier = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
int height = getResources().getDimensionPixelSize(identifier);

透明导航栏:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

77.TextInputLayout实:EditText获取焦点后就去除提示;未输入提示和已输入提示不同:监听EditText的焦点状态重置连个hint内容

78.RecyclerView实现重叠鱼鳞状:addItemDecoration底部设为负值;Item最外层使用CardView;每一个CardView的CardElevation比上一条目的多一定比值

79.使用Spanny代替SpannableString:ForegroundColorSpan改变字体颜色;AbsoluteSizeSpan改变字体大小;可点击文字并改变文字颜色Clickable extends ClickableSpan;

78.银行卡空格式输入+卡Bin识别:
重新实现AddSpaceTextWatcher的onTextChanged方法

79.ScrollView当总内容没能填满屏幕时,底部内容位于屏幕底部,底部之上有空白填充;当总内容超出屏幕时底部内容位于总内容底部之间无填充;

80.当Activity布局填充完成时的监听回调;

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus && isFirst) {
            isFirst = false;
            App.post(new Runnable() {
                @Override
                public void run() {
                    //此处获取内容
                }
            });
        }
    }

81.键盘输入框的几种交互:
1.整个内容被从底部顶起
2.只有当前输入的EditText被顶起
3.指定控件被顶起

82.自定义Dialog:类似于使用Activity,onCreate(),onBackPress(),setContentView()等

83.页面路由,用于模块间访问,无法获取类名时。
Arouter

84.vlayout设置各个条目类型的缓存

85.WebView页面作为条目内容不要频繁加载

86.TextView动态设置drawLeft,drawRight…

Drawable drawable = context.getResources().getDrawable(R.mipmap.mine_shop_icon);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
tv.setCompoundDrawables(drawable, null, null, null);

87.隐式意图来完善模块化分割(独立功能拆分成库)时的双向调用;Application初始化时给库传入Context;

//在App module的清单中注册
<activity
    android:name="com.xjx.demo.home.BActivity"
    android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="com.demoBActivity.action" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
</activity>
//在App module中启动
Intent intent = new Intent();
intent.setAction("com.demoBActivity.action");
intent.addCategory("android.intent.category.DEFAULT");
startActivity(intent); 
        

88.使用配置文件画竖虚线:
(1)画横向虚线

    <shape android:shape="line">
        <stroke
            android:width="0.5dp"
            android:color="@android:color/white"
            android:dashGap="5dp"
            android:dashWidth="5dp" />
    </shape>
    //在View上加
    android:layerType="software"
    //否则为实线

(2)旋转90度

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:toDegrees="90">
    <shape android:shape="line">
        <stroke
            android:width="0.5dp"
            android:color="@android:color/white"
            android:dashGap="5dp"
            android:dashWidth="5dp" />
    </shape>
</rotate>

(3)View的宽度设为和目标高度一样,否则旋转后高度等于宽度。多出来的宽度使用负margin

<View
    android:layout_width="75dp"
    android:layout_height="75dp"
    android:layerType="software"
    android:layout_marginLeft="-35dp"
    android:layout_marginRight="-35dp"
    android:background="@drawable/shape_line_dash" />

89.设置ViewPager缓存数量

binding.vpContent.setOffscreenPageLimit(8);

90.Room代替DBFlow:

91.谷歌新架构:
compile “android.arch.lifecycle:runtime:1.0.0”
compile “android.arch.lifecycle:extensions:1.0.0”
annotationProcessor “android.arch.lifecycle:compiler:1.0.0”
92.mac上修改Android Studio新建EmptyActivity时的模板布局:
在as应用程序显示包内容找Contents\plugins\android\lib\templates\activities\common\root\res\layout下,找到simple.xml.ftl文件
<?xml version=”1.0″ encoding=”utf-8″?>
<layout>
<data>
<variable
name=”aty”
type=”{packageName}.{activityClass}” />
</data>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”>
</LinearLayout>
</layout>

    原文作者:面具猴
    原文地址: https://www.jianshu.com/p/79d3540bb55e
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞