![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 80
Nowindyli
喜欢思考的码农
展开
-
dfs 深度优先搜索思路
leetcode经典题17. 电话号码的字母组合给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。publicList<String>letterCombinations(Stringdigits)用一个Hashmap存放2-9里面包含的字符串 private StringBuilder builder = new StringBuilder(); List<Str...原创 2020-12-16 13:22:05 · 168 阅读 · 0 评论 -
SmartRefreshlayout 源码解析
万能的下拉刷新控件,很好奇怎么实现的,学习一下思路1、继承了接口NestedScrollingParent,这是嵌套滚动的,为了让子和父布局在滑动的时候无缝嵌套。也是一个自定义的viewGroup,既然是这玩意,先看下onMeasure方法怎么获得测量的宽高:需要计算刷新的头、尾和内容布局,头尾已经有一些定制的效果,这里根据外部的条件,去计算整体的宽高。//取到所有的子view,拿到刷新的头布局 if (mRefreshHeader != null && mRefres.原创 2020-12-09 14:12:51 · 980 阅读 · 0 评论 -
android apk编译打包流程
1、Android 源码里面的aapt工具位于***/frameworks/tools/aapt/目录下面主要用来打包java文件,资源文件,jar三方包,AndroidManifest.xml,aidl文件java文件和jar包会转成.class文件资源文件会生成R.java文件和.arsc资源文件,分配资源id,正常我们在hdpi这种里面放的图片都是0x77 开头的,在遇到插件化资源id冲突的时候,可以修改插件包里的R.java文件,这里就需要反射修改aapt工具了aidl文件会打包成.原创 2020-11-27 11:34:47 · 198 阅读 · 0 评论 -
android 10 问题汇总
1、因为deviceid的限制,所有各大三方sdk需要更新,比如个推、微信支付、环信、友盟2、Using WebView from more than one process at once with the same data directory is not supported这个错误是webview多进程使用导致,在api28以上,需要对webview 目录进行控制@Requ...原创 2020-03-05 14:54:31 · 718 阅读 · 0 评论 -
newrelic 数据无痕埋点的实现思路
现在我们有一个需求,统计登录失败、某个activity的页面停留时间,我们怎么办?1、在登录失败的地方、activity的生命周期处加日志,保存到本地数据看,再找个合适的时机上报给服务器(如页面启动且有网),这个方案可变性,操作性,定制性很高但会让客户端多很多无用代码2、利用友盟、听云、oneapm等平台进行统计,但定制性不足,有时候无法满足需求那么我们怎么去自己实现一个无痕埋点的统计呢?...原创 2019-12-13 11:08:08 · 536 阅读 · 0 评论 -
android studio 升级到3.5遇到的bug,环信sdk混淆无法发图片
环境:android studio从3.4升级到3.5,gradle插件版本升级到最新的3.4.2,gradle版本为5.1.1以上别的还好,升级对应包就好,最大问题是混淆,自己写的混淆文件有的不被识别,折腾了下,改了混淆文件,自己的代码没问题,然后发现第三方环信的无法发送图片了,查了日志,果然是环信的bug,全是环信的包名,请求图片上传的时候报错了。无奈,去看gradle官方文档,找到了...原创 2019-12-13 10:51:13 · 528 阅读 · 0 评论 -
okhttp中的线程池及源码分析
okhttp3使用很常见,通常我们使用的时候是这样的://创建okHttpClient对象OkHttpClient mOkHttpClient = new OkHttpClient();//创建一个Requestfinal Request request = new Request.Builder() .url(url)原创 2017-08-01 15:34:48 · 6640 阅读 · 0 评论 -
Android Realm数据库配合aop框架封装
Android Realm数据库配合aop框架封装Realm数据库的使用原创 2017-06-19 17:13:51 · 1770 阅读 · 0 评论 -
Rxjava2+retrofit2+rxAndroid+okHttp
Rxjava2+retrofit2+rxAndroid+okHttp 对于普通的http Get请求 先导入包 compile ‘io.reactivex.rxjava2:rxjava:2.0.8’ compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’ compile ‘com.squareup.retrofit2:retrofit:2.2.0’原创 2017-04-17 16:55:03 · 3256 阅读 · 0 评论 -
Android okhttp + rxJava + retorfit2使用心得
okhttp出来已经很久了,rxjava也是近两年火起来的框架,框架的使用能让我们写出更为优秀的代码,这里主要介绍square公司提供的框架,记录一下对Android新的http请求极具扩展性的写法。这里主要用到的是观察者模式,先说下概念,Observable是被观察者,Observer是观察者, 两者之间通过subcriber订阅者,由Observablesubcribe通知Observer实现原创 2017-04-10 15:22:42 · 3932 阅读 · 0 评论 -
实现Viewpager切换界面导航栏水波纹动画效果
实现效果: 该控件防百度阅读的导向栏进行研究,具体细节尚有不足,希望大家多多指点点击打开链接 Viewpager的滑动,引起标题栏的渐变。主要渐变过程要先画线,再画点。 画线过程: 利用path和PathMeasure类,画出一条曲线,moveto方法画起始点,quadTo方法画中间控制点和终点,由于现在是水平移动,中间控制点的坐原创 2015-03-27 17:43:04 · 2359 阅读 · 3 评论 -
Rxjava+retrofit+okhttp源码分析
基于上一篇对okhttp的源码分析,我们结合rxjava和retrofit再次进行源码分析,没看过上一篇的请跳转链接: okhttp中的线程池及源码分析 通常我们使用这套组合拳的代码可以在 Rxjava2+retrofit2+rxAndroid+okHttp 这里看到,那么我们接下来分析代码: Rxjava 功能主要是一个发布订阅模式,与真正的请求无关,那么请求是在okhttp中做的,这原创 2017-08-02 16:20:32 · 1174 阅读 · 0 评论 -
android Aidl原理分析
android Aidl原理分析aidl的创建server端使用Client的使用aidl是为了解决进程间通信的,也是binder的最好体现,下面分析一下:先是aidl文件的创建interface testtt{ /** * Demonstrates some basic types that you can use as parameters * and ret原创 2017-12-12 14:02:02 · 394 阅读 · 0 评论 -
android 知识点整理
1、Handler原理handler类中有Looper、messageQueue、message,构造方法中会初始化这些变量调用Looper.perpare方法中利用静态threadlocal存放looper对象,Looper类中有messageQueue,messageQueue中存放message队列。调用Looper.looper方法执行while(true)循环,从messag...原创 2019-02-20 13:56:49 · 165 阅读 · 0 评论 -
java虚拟机
通常java虚拟机我们需要了解的是执行流程,类加载器,双亲委托机制,内存模型,以及Gc算法四大块内容。下面我们挨个讲解下:执行流程: java虚拟机分为编译和运行阶段,编译阶段将.java文件转化为.class文件,运行阶段解析class文件类加载器: 1、BootStrap ClassLoader 用于加载jdk核心库,java.lang、java.util,应用层用不...原创 2019-07-26 15:27:21 · 93 阅读 · 0 评论 -
android Activity面试启动流程分析
面试的时候,想要说清楚ams的各个关系不容易,这边记录下:外部调用startActivity方法,启动一个Activity的时候,都会调用Instrumentation的execStartActivity方法,而这个方法在android7.0以下和以上的处理是不一样的,7.0以下的处理:通过ActivityManagerNative 的静态方法getDefault,取得ActivityMa...原创 2019-09-03 15:53:43 · 528 阅读 · 0 评论 -
基于事件分发机制实现的表头固定的Listview
基于事件分发机制实现的表头固定的Listview原创 2016-08-08 15:35:30 · 1178 阅读 · 1 评论 -
仿百度阅读滑动条之完美版
上一篇大概的讲了下实现吸入吸出Mesh效果的简单例子,经过进一步研究,发现和百度阅读的仍有一定差距。下面是最新研究的效果: 发现关键点在于滑动的同时,不只是Mesh的点发生变化。轨迹线也在变,所以在改变drawBitmapMesh 中的点时,需要改变线的轨迹。增加一个改变线的函数:public void buildPaths(int timeIndex){ flo原创 2015-04-01 17:53:27 · 1402 阅读 · 0 评论 -
android px、sp、dp之间的互转
public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.原创 2014-08-19 11:31:02 · 4850 阅读 · 0 评论 -
ListView用法总结
这里做的是一个文件浏览器,ListView首先不继承ListActivity,main.xml中定义一个ListView,而在list_data.xml中定义ListView每一行的数据项,这里有一个TextView和checkbox。要知道ListView最终要存的是一个Adapter,而Adapter有三种,这里只介绍baseAdapter,因为其余两种比较简单,而baseAdapter主要的原创 2013-08-26 20:08:06 · 3413 阅读 · 0 评论 -
Android 4.3初学文件含义
学习Android工程下所有子文件的大概内容。 Src 资源文件,存放主要代码的地方 Gen BuildConfig.java是后来ADT更新的,有助于调试,具体怎么体现,还未知。自动生成,不可修改。 R.java 里面有静态内部类,主要是存放res目录下对应得常量值。属于自动生成,不可轻易修改。 Android4.0.3此文件为当前选中的虚拟器,原创 2013-08-15 10:50:53 · 1699 阅读 · 0 评论 -
Android 调试机制
Android的调试信息可以根据DDMS进行查看,Logcat日志输出所有的调试信息,为了方便的找到我们需要的打印信息,可以在logcat后面增加过滤器。比如你想查看system.out.println(),这个函数的打印信息,需要你点击“+”,Filename中写入你自己定义的名字,如sysout,by Log tag中输入system.out即可,而增加Log.v之类的过滤器需要你在by Lo原创 2013-08-16 15:02:31 · 1212 阅读 · 0 评论 -
Activity 的生命周期
两个大窗口的Activity之间的切换: 启动一个新的Activity时,需要依次调用oncreate、onstart、onResume方法,OnCreate方法是在第一次创建Activity的时候调用的,当Activity能被用户看到的时候调用Onstart方法,当用户能获取到焦点的时候调用OnResume方法。原创 2013-08-16 17:42:22 · 822 阅读 · 0 评论 -
ListView 与EditText共存的焦点问题
这里要实现的功能是文件管理器中的重命名,根据选择的文件名,进入到重命名对话框。用ListView存放所有的文件名,EditText来书写新的文件名,然后保存。 实现listView和EditText焦点的切换。原创 2013-09-05 11:16:34 · 11289 阅读 · 0 评论 -
onInterceptTouchEvent解决GridView和ImageButton焦点共存的问题
屏蔽GridView中的ImageButton原创 2013-09-29 15:57:44 · 1990 阅读 · 2 评论 -
Android eng版系统烧录
这里我只能记录下过程 Android有四层,最底层的Linux是一个kernel,然后是运行时库层,驱动大部分在这两层完成,接着是Framework层,主要是Android源码,最后是在源码基础上进行二次开发的应用层。 要烧录eng系统,需要对kernel、xloader、uboot和android四个bsp进行编译,利用putty工具,从服务器上将这四个文件拷贝下来,原创 2013-09-17 16:34:32 · 2850 阅读 · 0 评论 -
平板开发之ActionMode
首先看看我们要做的效果: 点击选择项进入到ActionMode界面,如下: android系统提供的菜单不能满足要求,我们需要自定义菜单,这里只需要建立普通的菜单就可以了,无需上下文菜单,即: 复写@Overridepublic boolean onCreateOpti原创 2013-10-09 19:50:08 · 3244 阅读 · 0 评论 -
fragment的实现与互相通信
fragment 通信 数据传递原创 2013-09-25 13:56:58 · 2884 阅读 · 0 评论 -
HorizontalScrollView水平滚动视图的显示
实现效果如下: HorizontalScrollView 水平 滚动 视图原创 2013-09-26 14:04:38 · 5545 阅读 · 0 评论 -
settingFragment设置属性的创建与响应
android3.0之后设置属性有专门的方式显示,基于PrefenceFragment,通过addPreferencesFromResource(R.xml.preferences);加载界面。如图: 我的布局大致如下: xmlns:android="http://schemas.android.com/apk/res/android">a原创 2013-10-15 16:37:47 · 3325 阅读 · 0 评论 -
TCP/IP 网络通信基础
通过TCP/IP让两台真机进行通信,选定一台真机做服务器,一台做客户端,客户端需要知道服务器端的ip,通过adb命令可以查看到连接到wifi的平板的ip, adb shell netcfg 如图,可以查看到ip为192.168.1.79 注意一点:android3.0版本以后的网络原创 2013-10-19 18:40:35 · 1292 阅读 · 0 评论 -
基于TCP和UDP的聊天功能的实现
这里类似于登陆功能的实现,是基于UDP实现的,而聊天的内容,是基于TCP实现的,大概流程是: 建立一个服务端: 下面是UDP开启服务器返回给客户端的确定值: public void ServerReceive(){if(serversocket == null){try {serversocket = new DatagramSocket(PORT);}原创 2013-10-28 15:15:59 · 2146 阅读 · 0 评论 -
android4.3 framework之zygote深入
zygote本身是一个Native应用程序,在Android.mk中指定的名字是app_process,源码位置: framework/base/cmds/app_process/App_main.cpp 该代码重要功能是由AppRuntime的start完成的,而这个函数使用的是基类AndroidRuntime的start,分析AndroidRunti原创 2014-03-11 15:40:01 · 1157 阅读 · 0 评论 -
framework之 ContextImpl文件解析
ContextImpl Context的实现原创 2014-03-08 17:39:40 · 6980 阅读 · 0 评论 -
android telephone 4.2 framework层分析
framework层的相关代码主要在原创 2014-07-04 14:27:01 · 2225 阅读 · 2 评论 -
android4.2 telephone应用层分析
InCallScreen 复制通话界面的显示和提供人机交互的接口,原创 2014-06-20 14:59:34 · 2784 阅读 · 0 评论 -
Android File类 根据官方文档理解
File有四个构造函数 public File(File dir,String name) 参数为File和String,File制定构造的新的File对象的路径,而String制定新的File名字 Public File(String path)原创 2013-08-15 15:52:59 · 20955 阅读 · 0 评论