所有应用:无论 targetSdkVersion 是否小于 28,都需要修改应用以正确支持这些变更。 API 28+ 应用的行为变更:指 targetSdkVersion 为...
所有应用:无论 targetSdkVersion 是否小于 28,都需要修改应用以正确支持这些变更。 API 28+ 应用的行为变更:指 targetSdkVersion 为...
主要代码就两行: 效果如图:
谷歌官方指南https://developer.android.com/training/multiscreen/screensizes?hl=zh-cn#alternati...
一. 布局优化 核心思想:减少布局文件层级布局层级减少 -> 绘制工作量减少 ->性能提高 删除布局中无用控件和层级 有选择的使用ViewGroup优先使用 LinearLa...
虽然很多人点赞,我觉得是又臭又长,你花大篇幅整理了怎么分发 却没有点明为什么会这样。很多新人估计看一遍觉得不错,实战或者去面试,依然啥都记不住不知道,也不知道为什么。说到底还是个返回值传递的问题。相互是个什么干扰,你列举这么多情况反而是一种记忆负担。
我举例ViewGroup的dispatchTouchEvent你如果点明 内部是
ViewGroup
View[] views=getChildView();
for(int i=0;i<views.length;i++){
//判断下Touch到屏幕上的点在该子View上面
if(...){
if(views[i].dispatchTouchEvent(ev))
return true;
}
}
view的内部dispatchTouchEvent其实就是自己的onTouchEvent
View
public boolean dispatchTouchEvent(MotionEvent ev){
....//其他处理,在此不管 return onTouchEvent(event);
}
这就不容易解释为什么不拦截的情况下,就是子不要父才能要 只要一个子要,就不继续往下执行,父就不能要的吗 因为直接return了 循环终止了。
测试代码 报错信息 报错信息有两点提示: Toast 需要创建 handler Handler 里需要有关联的Looper:调用 Looper.prepare 疑问:那么是不...
对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了。 下面分为GET、POST、DELETE还有PUT的请求,说明@Path、@Query、...
前言 一般项目我都会使用Glide作为我的图片加载框架,他和Picasso ,真的很像,郭大神早就分析过了,很详细,这里也就简单做个记录。小白白一枚,学习路上 Android...
漫漫读书路,你一定掉进过以下读书的坑: 想读书但不知道该读什么书; 当当大促看着别人屯书嗨,自己完全不知该买什么; 网上书单太多不知道哪个适合自己; 终于下决心读点书,又发现...