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

2017-01-14 10:06:26来源:http://www.jianshu.com/p/37d80789b25f作者:zgsHighwin人点击


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


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;
}
});



Context实例.png


Activity之间传递数据的几种方式.png

关于VIew id的问题



view id.png
这两个方法的实现可参考,并且要保存状态的View要有唯一的id而且在View初始化的 
时候要调用setSaveEnabled(true);才能在New view 创建一个实例的时候调用
onSavedStateInstance 的方法


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中


UnCaughExceptionHandler.png

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

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

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

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



BroadCast和localBroadManager的区别.png


线程优先级.png
可以为线程设置优先级


设置优先级.png


有必要去看一下的Android 源码.png

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

Java8 ::用来引用的是构造方法和静态的方法


Java8的Effectively final 特性.png

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

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

限制输入的时候可以使用注解的方式,用枚举的本质还是创建对象


作用注解的方式来代替枚举.png


Application注意事项.png

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

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



Handler.png


HandlerThread.png


IntentService.png

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

如果包名相同的情况下,可以采用这种方式来写


SupportLiVersion.png

 ViewStub的使用方法
<ViewStub
android:id="@+id/vsHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inflatedId="@+id/header"
android:layout="@layout/header" />
其中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弹出在软键盘的上方
<activity android:windowSoftInputMode="adjustPan">



最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台