
android
qq_21727627
一个苦逼的又爱装逼的程序员
展开
-
dialog 设置宽度
完美设置dialog 的大小原创 2022-12-10 12:57:09 · 259 阅读 · 1 评论 -
Handler native 层
Handler native 层原创 2022-07-03 19:36:36 · 151 阅读 · 0 评论 -
FLAG_WATCH_OUTSIDE_TOUCH
FLAG_WATCH_OUTSIDE_TOUCH原创 2022-07-02 21:34:37 · 647 阅读 · 0 评论 -
PendingIntent 使用注意事项
PendingIntent原创 2022-07-02 20:28:53 · 102 阅读 · 0 评论 -
Activity 事件传递
Activity 事件传递原创 2022-07-02 18:50:40 · 133 阅读 · 0 评论 -
在 LayoutInflater 加载布局时,AttributeSet 如何找到对应view的属性
view 加载原创 2022-07-02 18:47:13 · 93 阅读 · 0 评论 -
view.post怎么就可以正确的获取宽高了
view 宽高测量原创 2022-07-02 18:45:27 · 87 阅读 · 0 评论 -
java 层binder 对象传递流程
1. 闲来无事又瞎折腾 binder 源码,以前 看binder理论 云里雾里的不知所云,于是就来折腾了,只为念头通透。2. 从bindService 方法开始来了解 java binder 对象的传递过程.基于4.4源码:ContextImpl.java1.以此为入口 sd 是一个java binder。ActivityManagerNative.getDefault().bindService( mMainThread.getApplicationThre.原创 2021-01-03 17:57:23 · 418 阅读 · 0 评论 -
Handler 内存泄露详细原因
1. 说Handler内存泄露这种文章挺多的,基本就是handler 使用不当 持有外部引用导致的内存泄露完毕.2.根据可达性gc 算法,当一个引用没有被root 对象引用时,该对象内存随时被系统回收,那么handler 的引用链又是什么呢?未指定Looper 默认就使用主Looper ,那么主Looper 在哪里创建呢?在ActivityThread类中: public static void main(String[] args) { ... ..原创 2020-12-24 15:00:05 · 260 阅读 · 0 评论 -
Android Matrix 理解与源码阅读
1. 在画布 会使用 rotate ,translate,skew 方法,对画布旋转,移动。这些对画布的操作数据使用的是Matrix 对象存放的,是以一维 数组来存放3*3阶矩形数据.2.3*3阶矩形是 有三行三列数据 如: 1 2 3 a= 1 2 3 1 2 33.a *b 的矩形如何计算的呢 (公式: ...原创 2020-02-16 12:39:33 · 302 阅读 · 0 评论 -
让PopupWindow 可以投影问题
1.其他三个同事搞了半天解决不了,最后我也上去试了试.百度找不到,就跟踪源码解决问题.首先调用setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT))设置为背景透明.然后在外面在套一层容器.像这样<RelativeLayout xmlns:android="http://schemas.android.com/apk/re...原创 2019-09-13 14:29:19 · 414 阅读 · 0 评论 -
RadioGroup和RadioButton 结合使用出现的问题.
1.使用RadioGroup check方法会使 回调接口的onCheckedChanged方法回调两次.check 代码: public void check(@IdRes int id) { // don't even bother if (id != -1 && (id == mCheckedId)) { ret...原创 2019-09-13 14:04:05 · 478 阅读 · 0 评论 -
从usb 实际应用中分析源码之claim通信节点
1.usb想要通信就必须要claim 到通信的节点上. mUsbDeviceConnection.claimInterface(intf, forceClaim);2.调用的是本地方法在 android_hardware_UsbDeviceConnection.cppstatic jbooleanandroid_hardware_UsbDeviceConnection_cla...原创 2019-01-20 14:35:07 · 1785 阅读 · 0 评论 -
从usb 实际应用分析源码之usb权限
1.第二步就是判断权限是否开放,因为在open 是会对权限检验所以必要的: mUsbManager.hasPermission(mDevice)); mUsbManager.requestPermission(mDevice, mPermissionIntent); 2.直接看UsbService 吧 public boolean hasDeviceP...原创 2019-01-20 14:33:48 · 528 阅读 · 0 评论 -
从usb 实际应用分析源码之usb遍历
1.HashMap<String, UsbDevice> deviceList = this.mUsbManager .getDeviceList(); 从中得到系统已经为你遍历好的usb设备,IUsbManager 真正调用的是UsbService ,直接去看UsbService.2.看注释 usb 查找,添加,删除是调用HostManager 类方法的.usb 设备 状...原创 2019-01-20 14:32:24 · 578 阅读 · 0 评论 -
LruCache 原理
其他方法很简单,最核心的方法是trimToSize(): public void trimToSize(int maxSize) { while (true) { K key; V value; synchronized (this) { //参数异常 if (siz原创 2018-01-15 15:50:29 · 334 阅读 · 0 评论 -
内存泄露和优化解决方案搜集
1.单例模式内存泄露:对象是静态static的 会存到程序结束使才回收.但是如果传递activity 作为 构造参数.屏幕旋转时由于activity就无法回收,导致两个activity都存在,解决方法是:传递生命周期相同的 application context 作为参数2.非静态类声明声明静态类对象并持有非静态类对象引用:原因跟上面一样的....要么改非静态的要么持有生命周期相同的对象3原创 2017-09-13 18:59:18 · 326 阅读 · 0 评论 -
Popupwindow 适配25版本与简单跟踪
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) { int dropLocation = UIUtils.dip2Px(1) + viewHeight+ screenLocation[1]; mPopupWindow.showAtLocation(this, Gravity.NO_GRAVITY, 0,原创 2017-11-14 13:36:45 · 736 阅读 · 0 评论 -
使用贝塞尔曲线和Pathmeasure画粘连体
public class StickinessView1 extends View { Paint paint; Path path; private PathMeasure mPathMeasure; ValueAnimator valueAnimator; boolean isAnimation; PointF ponitF; float offset原创 2017-08-28 12:16:54 · 341 阅读 · 0 评论 -
AudioManager 对个个声音的控制
获取系统音量通过程序获取android系统手机的铃声和音量。同样,设置铃声和音量的方法也很简单!设置音量的方法也很简单,AudioManager提供了方法:JAVA代码:AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);//通话音量int max转载 2016-12-29 12:21:00 · 828 阅读 · 0 评论 -
fragment 中获取getActivity组件null问题。
fragment 静态加载和动态加载静态加载如图:都喜欢在oncreate初始化并获得activity组件并在这个设置 回调(自己百度,与其关联acticity通信)点击出现:空指针这个问题让我很头疼 看一下下面的执行顺序把。activity 的oncreate 还没有执行,说明还没有加载布局,所有获取不到。那么改一下把。解决了:还有一原创 2016-12-29 12:30:29 · 323 阅读 · 0 评论 -
fragment 动态加载获取activity组件
动态如下,加tag是为通过管理器获得所创建fragment...回调(自己百度):在看看执行顺序把。。。所以动态加载在哪里获取的可以,不知道两次为何没有打印onattach,可能是模拟器把.再次强调不要new fragment....要用管理器bytag获取.不然又是null.原创 2016-12-29 13:29:21 · 411 阅读 · 0 评论 -
intent action 大全
ADD_SHORTCUT_ACTION动作:在系统中添加一个快捷方式。."android.intent.action.ADD_SHORTCUT"ALL_APPS_ACTION动作:列举所有可用的应用。输入:无。"android.intent.action.ALL_APPS"ALTERNATIVE_CATEGORY类别:说明转载 2016-12-29 14:48:41 · 175 阅读 · 0 评论 -
Android Parcelable和Serializable的区别
本文主要介绍Parcelable和Serializable的作用、效率、区别及选择,关于Serializable的介绍见Java 序列化的高级认识。 1、作用Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializ转载 2016-12-29 14:53:02 · 149 阅读 · 0 评论 -
include和merge 布局使减少布局重用
尽管Android 支持各种小部件,来提供小且可以重用的交互元素,你可能还需要更大的,要求一个专门布局的重用组件。为了高效的重用整个布局,你能使用和标签在当前的布局中嵌入别的布局。 重用布局功能特别强大,因为它允许你创建可重用的复杂布局。例如,一个yes/no按钮面板,或者自定义带有描述字符串的滚动条。也就是说,在你的应用中任何跨越多个布局的相同元素都能被提取转载 2016-12-30 19:02:51 · 238 阅读 · 0 评论 -
layout-land横屏和layout-port竖屏
安卓系统会为我们旋转时找到最合适的配置xml,在手机横屏时,会先从-land找xml文件没有才从默认的找,-port同样但前提是旋转时会重新创建activity不然还是原来的那一个...不要把layout-land写成layout_land会出现bug.....还有就是在project视图中可以看到创建文件目录,在android中是看不见的:layout还有其他适配文件的:原创 2017-02-04 17:56:22 · 1518 阅读 · 0 评论 -
listview item 焦点被某一个控件占用问题
看图:performClick.run 方法都是在这个判断语句里面,而且要想 onitemclick 有用那么就要执行 performclick.run();hasFocusable方法如下:解决方法如下:1.使.shouldblock....方法返回true;怎么返回true:再其 父布局 添加 descendantfocuability 属性忽略原创 2017-03-02 13:30:14 · 290 阅读 · 0 评论 -
viewPager+多个Fragment状态保存
1.直接设置viewPagersetOffscreenPageLimit(num) num为fragment的个数,adapter一次会加载所有fragment.并切换的时候不在调用 instantiteItem 和destroyItem方法2. 重写destroyItem 方法 如图:ps:viewpager+viewPager+fragment fragment切换完的原创 2017-03-10 13:21:44 · 910 阅读 · 0 评论 -
发现preferencescreen 首选项非常好用
个人感觉在设置页面和用sharedPreferece记录控件的状态,用prefeerenceScreen是很好用的.1.使用步骤 在res目录创建xml目录,创建就有提示了.在其他目录是不会用Preferencescreen提示的代码如下:<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/an原创 2017-04-01 17:43:56 · 1331 阅读 · 0 评论 -
android 官文摘要
1.mipmap/ directories for launcher icons,mipmap目录为桌面运行图标2.Android selects which alternative resource to use at runtime, depending on the current device configuration.在运行时会根据设备配置,系统会自动选择可选的资源2.翻译 2017-04-03 13:20:19 · 211 阅读 · 0 评论 -
TextView跑马灯的使用简单分析
代码如下: <TextView android:id="@+id/tv_title" android:gravity="left" android:layout_gravity="center" android:ellipsize="marquee" android:singleLine="true" android:shad原创 2017-04-13 22:57:26 · 438 阅读 · 0 评论 -
fragment viewpager和tablayout相互嵌套内容不显示和组件不显示问题
1.在ViewPagerAdapter中 fragment是如何查找和关联的呢,:点进super(fragmentManager) 看instantiateItem方法看如图:getItemId其实就是他的位置,makeFragmentName返回的是containerID和position组合的字符窜,方法如下:而mFragmentManager不是getFrag原创 2017-03-08 15:16:23 · 6430 阅读 · 1 评论 -
插值器
只是几张图:AccelerateDecelerateInterplate 加速然后减速可用于 物体向上抛 AccelerateInterplate 加速运动 可用于物体下落 AnticipateInterpolator 回荡秋千插值器 AnticipateOvershootInterpolator 先往回运动 后加速 在原创 2017-08-26 19:38:19 · 275 阅读 · 0 评论 -
Android的进程与生命周期
转载自:http://blog.youkuaiyun.com/codezjx/article/details/8854507一、Android的进程与生命周期:Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首转载 2017-01-04 15:45:16 · 1021 阅读 · 0 评论