Android 学习笔记-知识点(二)

  • 以下的一些是知识点是平时在开发的过程中遇到的一些知识点,总结起来,目的是提高自己的水平,由于本人开发时间不长,有些知识点可能过于的简单,但是好记性不如烂笔头,如果有错误的地方请指正,谢谢。

EditText设置打开的时候默认的输入状态
默认中文打开输入中文状态和英文输入状态

EditText.png

在代码中,inputtype的属性必须设置在singleline的后面


/**
 * 打卡软键盘
 *
 * @param mEditText 输入框
 * @param mContext  上下文
 */
public static void openKeybord(EditText mEditText, Context mContext) {
    InputMethodManager imm = (InputMethodManager) mContext
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
            InputMethodManager.HIDE_IMPLICIT_ONLY);
}

/**
 * 关闭软键盘
 *
 * @param activity
 */
public static void closeKeybord(Activity activity) {
    final View v = activity.getWindow().peekDecorView();
    if (v != null && v.getWindowToken() != null) {
        InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
    }
}

监听输入法的内容变化是edittext.addTextChangedListener
监听输入法的回车按钮是edittext.setOnKeyListener,判断的条件为
其中keycode可以是软键盘上的任何键
editText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
            //点击回车时并弹起
            return true;
        }
        return false;
    }
});

Android 学习笔记-知识点(二)_第1张图片
Context实例.png

Android 学习笔记-知识点(二)_第2张图片
Activity之间传递数据的几种方式.png

关于VIew id的问题

Android 学习笔记-知识点(二)_第3张图片
view id.png
这两个方法的实现可参考,并且要保存状态的View要有唯一的id而且在View初始化的 
时候要调用setSaveEnabled(true);才能在New view 创建一个实例的时候调用            
onSavedStateInstance 的方法
Android 学习笔记-知识点(二)_第4张图片
Paste_Image.png

如何判断Activity是销毁的
If(acitivity== null||activity.isDestroyed()||activity.isFinishing()){
//google工程师判断Activity是否是销毁的多了一个ondestroyed的判断
}

Service的onCreate是在主线程中调用的,耗时操作会阻塞UI,处理方法有多种,可以使用线程,handler,intentService

android:animateLayoutChanges="true"
在父View设置这样一个属性,子View 设置Gone和Visible会有一个动画效果

在RecyclerView和ListView中设置android:clipToPadding可以只设置第一项距离项端的距离
即android:clicpToPadding = “false” android:paddingTop = “10dp”

ArgbEvaluate用于计算不同颜色之间的插值,有一个平滑的过度过程 

Android 可能由于服务器问题闪退,三闪闪退以上可能是由于数据已经被存放起来,需要将数据清除掉

 去除系统闪退的弹出框,其中UnCaughExceptionHandler中不能打开一个新的线程,诸如错误上报的问题
上传服务器的问题只能采用同步的方式,但是效果可能会比较的慢,但是可以将错误的信息保存到Sp中
Android 学习笔记-知识点(二)_第5张图片
UnCaughExceptionHandler.png

EditTex的setSelection是设置edittext光标的位置

RandomAccessFile使用这个类可以在指定的位置添加一些内容。

我们需要谨记的原则就是:不要在任何非UI线程里面去持有UI对象的引用。

Runtime.getRuntime().availableProcesser()方法并不可靠,他返回的值并不是真实的CPU核心数,因为CPU
会在某些情况下选择对部分核心进行睡眠处理,在这种情况下,返回的数量就只能是激活的CPU核心数。

Android 学习笔记-知识点(二)_第6张图片
BroadCast和localBroadManager的区别.png

线程优先级.png
可以为线程设置优先级
Android 学习笔记-知识点(二)_第7张图片
设置优先级.png

Android 学习笔记-知识点(二)_第8张图片
有必要去看一下的Android 源码.png

多渠道打包
就是发布到不同渠道的包,比如你看很多小米商店下载的app,启动页会有小米商城的logo。

Java8 ::用来引用的是构造方法和静态的方法
Java8的Effectively final 特性.png

按键或触摸事件5s,广播处理10秒,服务20秒可能会出现anr

Manifest中设置了screenOrientation在Activity中设置onConfituration的方法不会被调用

限制输入的时候可以使用注解的方式,用枚举的本质还是创建对象
Android 学习笔记-知识点(二)_第9张图片
作用注解的方式来代替枚举.png

Android 学习笔记-知识点(二)_第10张图片
Application注意事项.png

画笔设置设置阴影
paint.setShadowLayer(4, 2, 2, 0x80000000);
***

Handler.post(r) 实现是工作在ui线程,这只是执行了runnable里面的run方法,并没有执行start的方法。

Android 学习笔记-知识点(二)_第11张图片
Handler.png
HandlerThread.png

Android 学习笔记-知识点(二)_第12张图片
IntentService.png

手机的开发者选项里面的(窗口动画绽放,过渡动画缩放,动画程序时长缩放)分别对应以下的三个动画绽放
"Window animation scale",作用于非Activity窗口。比如,Dialog、toast、自定义浮窗、输入法等窗口都是该选项的作用目标
"Transition animation scale",作用于Activity窗口。Activity窗口是该选项作用目标
"Animator duration scale",作用于View。比如View属性动画、水波纹背景动画等

如果包名相同的情况下,可以采用这种方式来写
Android 学习笔记-知识点(二)_第13张图片
SupportLiVersion.png

 ViewStub的使用方法


其中inflatedId是在获取到ViewStub中实际View的id
    stub = (ViewStub) findViewById(R.id.vsHeader);
    View inflated = stub.inflate();
    View view = inflated.findViewById(R.id.header);
    inflated = view //true
    所以拿inflated.findViewById()和view.findViewById()的结果是一样的
代码中也可以这种方式添加
    ViewStub stub = new ViewStub(this);
    stub.setLayoutResource(R.layout.header);
    stub.inflate(); 

  把底部的EditText弹出在软键盘的上方


不能在application中做一些缓存数据的操作,如果当前app从后能切到前台的过程这前,系统可能会对application中的数据做一些清理的工作,导置在切到前台的过程中导致应用程序崩溃。

Android 数据库升级的过程中会将数据库中的数据信息清除掉,升级过后能会导置应用程序崩溃,解决的办法是升级的时候做数据的保存,在拷贝数据到高的版本中

你可能感兴趣的:(Android 学习笔记-知识点(二))