安卓总结(一)
从事Android开发已经整整一年,明白许多知识都是必须要记住的。另外,许多做过的东西都是套路,不整理一下容易忘记,因此做一下记录,希望后面做事情能更有效率。
1、打开米4usb调试要打开usb侦错
2、onTouchEvent 和onTouch 的区别
StackOverflow上的回答:
After many experiments with onTouchEvent and onTouch, I found that onTouch works everywhere you want (whether it is in activity or view) as long as you have declared the interface and put the Listener right! On the other hand, onTouchEvent only works inside a View! Is my assumption correct? Is this the real difference?
Yes you are correct - onTouch() is used by users of the View to get touch events while onTouchEvent() is used by derived classes of the View to get touch events.
3、PopupWindow显示的方法有三个,
showAsDropDown(anchor)
showAsDropDown(anchor, xoff, yoff)
showAtLocation(parent, gravity, x, y)
前两个showAsDropDown方法是让PopupWindow相对于某个控件显示,而showAtLocation是相对于整个窗口的。
这里解释一下showAtLocation(parent, gravity, x, y)
:
第一个参数是View类型的parent,虽然这里参数名是parent,其实,不是把PopupWindow放到这个parent里,并不要求这个parent是一个ViewGroup,这个参数名让人误解。官方文档”a parent view to get the android.view.View.getWindowToken() token from“,这个parent的作用应该是调用getWindowToken()方法获取窗口的Token,所以,只要是该窗口上的控件就可以了。
第二个参数是Gravity,可以使用|附加多个属性,如Gravity.LEFT|Gravity.BOTTOM。
第三四个参数是x,y偏移。
4、List的toString还是对象地址,不要想当然的以为能打印出每个对象
5、SurfaceFlinger
英文直译就是surface的投递者,surface就不用翻译了,翻译了反而不好理解。SurfaceFlinger是android的一个服务,其负责管理应用端的surface,将所有的surface复合。他是介于图形库和应用之间的一层。每个应用在它自己的surface完成各种图形操作后,请求SurfaceFlinger显示到屏幕,surfaceflinger就会将所有的surface叠加起来,并且反映到framebuffer.
6、SDK mamager中Google Repository 包含针对 Google 移动广告 SDK 的 Gradle 工件,您的应用可以使用它们来请求和展示广告。
7、在拥有drawLayout的布局文件中默认将第一个子节点作为内容区,第二个作为抽屉菜单
8、安卓遇到查看不了文件时,提示没有权限,首先利用root软件对手机进行root,推荐kingroot,root成功后在控制台输入su,这时手机会提示是否赋予控制台程序root权限,选择永久允许后就可以通过控制台利用adb shell命令进行查看文件的操作
9、获取手机屏
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
mScreenHeight = outMetrics.heightPixels;
10、使用高度为1dp的标签可实现分割线
11、资源文件的节点
第一行是xml文件的定义:
<?xml version="1.0" encoding="utf-8"?>
第一个节点是<resources
第二个节点是具体的类型,如string,color
等
12、RenderScript
会在机器上进行二次编译,所以所有支持RenderScript的设备都可以运行你的代码。
因为编译时在机器上实时编译的所以移植性好
13、git解决冲突
<<<<<<HEAD
HEAD的内容
==========
合并分支的内容
>>>>>>>
14、导入gif图片崩溃的问题 :用nativebitmap生成,然后getimage
15、外部类能直接访问内部类的私有变量
16、Mixpanel统计
MixpanelManager.getInstance.doLogEvent(Context context, String eventName, String groupKey, String groupValue)
context:传actvity对象
eventName:组名
group:事件名
groupName:事件值
Flurry统计
Map<String, String> params = new HashMap<String, String>(1);
params.put(事件名,事件值);
FlurryAgent.logEvent(组名, params);
17、@SuppressLint(“NewApi”)和@TargetApi() 的区别:
@SuppressLint(“NewApi”)屏蔽一切新api中才能使用的方法报的android lint错误
@TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误
18、、Queue和ArrayList的区别
Queue:先进先出,不能重新排序,不能索引访问
ArrayList:可以重新排序,可以索引访问
一般queue用来模拟多线程
19、the content of the Surface is never preserved between unlockCanvas() and
lockCanvas()
20、activity之间的动画切换
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);