
Android-基础
文章平均质量分 65
Xander_Wang
这个作者很懒,什么都没留下…
展开
-
总结笔记(六) - 网络编程总结
文章目录网络编程总结网络协议总览网络协议分层网络协议框架各层协议之间的区别合联系HTTP 协议HTTP 协议是什么HTTP 协议是如何工作的TCP/IP 的三次握手和四次挥手三次握手四次挥手如何理解 HTTP 协议是无状态的,无连接的HTTP 各个版本比较GET 和 POST 的区别HTTPS 协议原理HTTP 和 HTTPS 的区别网络开源库框架有哪些okhttp 源码解析如何优化网络网络编程总结网络协议总览网络协议分层网络协议框架各层协议之间的区别合联系应用层: Http WebSock原创 2021-01-05 22:48:44 · 134 阅读 · 0 评论 -
总结笔记(五) - Java 线程总结
文章目录Java 线程总结Java 线程安全什么是线程安全VolatileJava 变量的读写volatile 如何保持内存可见性volatile 如何防止指令重排序线程安全的实现方式synchronized锁膨胀过程Lock + volatileJava 里锁的分类常用锁的原理分析线程间通信线程池Java 线程总结Java 线程安全什么是线程安全在上一节的 Java 内存模型里面说到,程序在运行的时候,线程并不是直接从主存里面,而是先从主内存拷贝一份到工作内存(线程私有的),然后执行代码,最后把计原创 2021-01-05 22:47:46 · 223 阅读 · 0 评论 -
总结笔记(四) - JVM 总结
文章目录JVM 总结什么是 JVMJVM 在运行程序的时候,这个程序在 JVM 里面是怎么样的?一个 class 字节码文件里,类的结构是如何的?JVM 是如何找到一个类的JVM 加载类的时候,有哪些过程呢?Java 内存模型JVM GC四种索引GC 的类型回收算法DVM 和 JVM 区别,或者说是如何优化的JVM 总结什么是 JVMJVM 是 Java 虚拟机,是一个虚拟出来的计算机,仿真模拟计算机。JVM 在运行程序的时候,这个程序在 JVM 里面是怎么样的?JVM 的内存主要分为五块程原创 2021-01-05 22:45:59 · 108 阅读 · 0 评论 -
总结笔记(三) - Java 反射和注解总结
文章目录反射总结什么是反射反射有什么用反射的常用方法介绍Class 常用方法介绍Method 常用方法介绍Filed 常用方法介绍常用的场景动态配置动态代理hook 框架注解总结什么是注解注解定义注解的应用场景反射总结什么是反射反射是 Java 语言的一个特性,就是在程序运行状态中,对于任何一个类,都可以通过反射知道这个类所有的方法和属性。对于任何一个实例,都可以调用这个实例的任何方法和属性。这个在运行时动态获取类或者实例的属性和方法,动态调用属性和方法的特性就叫反射。反射有什么用从特性可以看出,原创 2020-09-07 21:37:13 · 155 阅读 · 0 评论 -
如何发布自己的 lib 库到 jcenter
一 注册一个 bintray 账号注册的方法比较简单,这里就不说了。注册网址 https://bintray.com/signup/oss二 bintray 上传教程在根 build.gradle 添加以下代码buildscript { ... dependencies { classpath 'com.novoda:bintray-release:0.+' // 0.+ ...原创 2020-04-20 09:24:44 · 252 阅读 · 0 评论 -
替换 Android Studio 默认的 gradle仓库地址
由于一些原因,总是很难下载 google 库和 jcenter 上得库,好在阿里给我们搭了个仓库来同步这些库,所有把 google 和 jcenter 库的地址替换为阿里的就可以很快下载库了。具体的方法就是找到 gradle 的配置文件夹 一般在 ~/.gradle 或者 C:/User/xxxx/.gradle 下面,如果有 init.gradle 文件,那么就把下面的内容复制粘贴进去,如...原创 2020-03-23 21:38:12 · 1800 阅读 · 0 评论 -
Android LruCacha 源码分析
LRU 算法,中文叫 近期最少使用算法。这个算法的思想是当容量已经满的情况下,我们再次向容器里面存放东西的时候,我们需要先删除之前使用最少的元素,因为这个元素在新元素插入之间一使用的最少,我们认为在后面的过程中,这个元素依然是使用次数最少的,当容积不够的时候,我们当然要删除后面过程中使用次数最少的,腾出空间给新的元素。Android 里面实现了这种算法,名字叫 LruCache 。下面我们从源码(a原创 2017-03-06 13:39:34 · 282 阅读 · 0 评论 -
Android Service 小结
1 Service 是什么,有什么作用Service 是不与用户交互,再后台运行的一个组件。因为是在后台运行,所以 Service 多用于处理耗时任务,或者需要在后台不被打扰的任务,如音乐播放、录音等等。2 如何使用 Service前面说了什么是 Service ,那我们来说说如何使用。Service 的生命周期函数onCreate() 方法,第一次被创建的时候调用,一般用来做初始化操作。onB原创 2016-12-20 21:39:04 · 355 阅读 · 0 评论 -
在android4.0以上的虚拟按键里添加虚拟menu
try { getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null)); }catch (NoSuchFieldException e) { // Ignore since this field won't原创 2014-04-22 11:13:08 · 863 阅读 · 0 评论 -
【Android-图片小技巧】通过给定的uri获取图片
/** * Loads a bitmap that has been downsampled using sampleSize from a given url. */ public static Bitmap loadDownsampledBitmap(Context context, Uri uri, int sampleSize) { Bi原创 2014-05-21 16:26:08 · 761 阅读 · 0 评论 -
XanderDialog-- 仿 iOS 的 Sheet
很久没有写博客了,现在写一点吧。今天主要是介绍自己的一个开源项目,在github上面,感兴趣的可以自己下来看看:https://github.com/XanderWang/XanderDialog效果呢大概就是这个样子,可以设置从顶部和底部弹出来,同时会有一个动画效果,不是会立刻突兀的弹出,使用方法呢也很简单,用法类似AlertDialog,可以多选(多选交互有待优化),单选,消息提示同时也支持自...原创 2015-03-30 22:15:58 · 832 阅读 · 0 评论 -
SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博
SharePanel – Android上简单的一键分享,可分享到微信QQ和新浪微博SharePanel Android上简单的一键分享可分享到微信QQ和新浪微博简介效果图代码块简介最近在写一个小程序长微博工具,效果就是编辑长微博,然后一键分享到微信、QQ和新浪微博。一开始是想直接用Intent.createChooser(target, title)来做,后来一想,这样做不是很好啊,会有原创 2015-04-12 22:08:31 · 1865 阅读 · 0 评论 -
RecycleView ItemTouchHelper 学习(一)
在 listview 的时候我们会碰到很多的上下拖动排序和左右滑动清除的开源库,在 RecycleView 上我们也能看到一些类似的库,然而令人欣喜的是官方给 RecycleView 提供了这么一个工具 – ItemTouchHelper 。这个工具可以很方便的帮助我们在 RecycleView 上完成上下拖动排序和左右滑动清除的功能。我们先说下使用方法。一个简单的用法如下:int dragFlag原创 2017-01-03 23:42:44 · 456 阅读 · 0 评论 -
Android 数据库升级方案总结
我们在开发 Android App 过程中难免会用到数据库,而数据库版本号通常会碰到升级或降级(降级应该比较少)的情况。那我们该如何去升级或者降级我们的数据库的版本号呢?我先描述我碰到的一个数据库升级的情况。一开始数据库的版本号是 1 ,有一天需求变动了,需要增加一个字段,毫无疑问,数据库需要升级,我的 SQLiteOpenHelper 大概是这么写的。public MySqliteHelper e原创 2017-02-23 11:15:19 · 887 阅读 · 0 评论 -
Android Canvas
canvas 的 translate , rotate , scale 是对坐标轴的处理, 以 translate 为例 canvas.translate(100,100)会把坐标轴向 x 轴方向和 y 轴方向移动 100 个像素点。 translate 后面的绘制会以以前的 (100,100) 为坐标原点绘制。原创 2017-03-08 16:19:16 · 266 阅读 · 0 评论 -
Android Studio 小技巧
插件整理 .ignore很好的一个管理 git 的 ignore 文件的插件,我的必装插件之一 翻译插件https://github.com/YiiGuxing/TranslationPlugin 这个是感觉比较喜欢的一个翻译插件,看到不认识的单词查一查也是极好的。build.gradle BuildeConfig.java开发中,我们发现有时候需要用到一个 config ,希望原创 2017-06-24 23:14:51 · 330 阅读 · 0 评论 -
Android adb 命令学习记录
adb 命令学习记录文章目录adb 命令学习记录通过 wifi 连接手机强大的 dumpsys 命令打印某个应用的内存信息打印 Activity 的信息am 命令tcpip 命令打印日志GPU 呈现模式过渡绘制性能分析vmstat 命令通过 wifi 连接手机有些时候,我们手头上没有数据线,这个时候想调试一个应用就不是很方便了。其实这个时候我们可以通过 wifi 来连接手机并调试。通过 wi...原创 2019-05-19 23:33:20 · 961 阅读 · 0 评论 -
Application.onCreate 、ContentProvider.onCreate 、 Activity.onCreate 的调用顺序研究
Application.onCreate 、ContentProvider.onCreate 、 Activity.onCreate 的调用顺序研究网上看到的一个问题,一开始没想到答案,也是很懵的,于是自己写了个 demo 。在 demo 里打印 log 顺序。先说结果吧Application.attachBaseContext();ContentProvider.onCreate();A...原创 2019-06-27 22:43:16 · 1388 阅读 · 0 评论 -
从头来过_要学游戏了么?
感觉自己有一段时间没写博客了,感觉自己好堕落啊,有时候觉得好累,但是木办法啊,谁让咱没多大本事呢,算了,不牢骚了,开始写起来,让自己努力,给自己正能量。话说公司要做小游戏放到手机上。好吧,那就做游戏,一直解Bug也挺烦的不是吗。正好游戏是自己想学习的,那就好好学。想做一款小游戏,背景可以移动的那种。于是乎就百度了下,发现了有很多的博客。网友们也有很多的方法,这里就不举例了,相信大家都会百...原创 2013-08-23 16:11:10 · 675 阅读 · 0 评论 -
Android Studio 开启支持 VectorDrawable
VectorDrawable如何兼容到 Android 50 以下VectorDrawable在 Android5.0(API Level 21)中,Android 开始支持矢量图 VectorDrawable, VectorDrawable 的特点就是它不会因为图像的缩放而失真。这样在 Android 开发过程中你不需要为不同分辨率的设备定义不同大小的图片资源,只需一个VectorDrawabl原创 2016-10-15 16:49:44 · 4041 阅读 · 0 评论 -
NetSpeed--网速检测
NetSpeed 是我业余时间开发的一款检测当前上网网速软件。 可以支持以下的设置项开机启动 开机自启检测频率 慢正常快显示样式 通知栏悬浮窗原创 2015-05-19 13:48:21 · 2325 阅读 · 0 评论 -
Android如何自定义一个View(一)
首先,你需要在value文件夹下新建一个attr.xml文件(文件名可以任取,但不能有大写的字母开头). 内容大概有这些<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CircleTip" > <attr name="circleTipColor" format="col原创 2015-06-15 11:22:30 · 622 阅读 · 0 评论 -
Android 进程间通信方式总结
首先,我们要知道什么是进程。 在 Android 里面,进程是一组组件的集合。默认下,同一个应用的所有组件都运行在同一个进程中并且大多数程序不必改变这一状况.然而,如果你非要与众不同,也可以通过修改 AndroidManifest.xml 文件中修改四大组件 ( activity , service , receiver 和 provider ) 来指定该组件运行在哪一个进程里。 由于 An原创 2016-09-01 22:38:38 · 1180 阅读 · 0 评论 -
XanderPanel -- 一个好用的 Dialog 拓展
XanderPanel平时工作需要,加上自己的业余时间做了这么一个控件。原创 2016-09-11 13:59:10 · 409 阅读 · 0 评论 -
同步 github fork 的原作者修改记录
在本地代码库添加原作者代码库的 remote 源,(操作一次就可以,以后不必每次添加) git remote add upstream 原作者代码库地址 #upstream 表示上游代码库名称获取原作者的更新 git fetch upstream同步原作者的修改 git merge upstream/master更新自己的远程代码库 git push碰到的问题原作者新增了分支,但是原创 2016-09-21 13:33:54 · 766 阅读 · 0 评论 -
OKHttp java.lang.IllegalArgumentException: Unexpected char 错误解决方法
在使用 okhttp 的时候,head 的一些项是中文,导致网络请求失败,错误类似下面的 java.lang.IllegalArgumentException: Unexpected char …找了一圈发现是 okhttp 对 head 的编码做了验证 Header values are (technically) required to be ISO-8859-1 but in pra原创 2019-04-29 15:52:08 · 20940 阅读 · 0 评论 -
Android Transition 学习笔记
参考资料 你所不知道的Activity转场动画——ActivityOptions官方文档仿开眼DEMO原创 2016-10-21 18:23:17 · 385 阅读 · 0 评论 -
仿 MIUI 弹性拉伸 view ,支持RecyclerView, ListView, GridView, ScrollView ...
首先申明:这个库是基于 Over-ScrollElasticity 支持 Android 原生控件 RecyclerView, ListView, GridView, ScrollView …这个库可以让几乎所有的 Android View 具有类似 MIUI 系统里面的一个弹性拉伸的效果。具体的效果可以参考下面的动图。demo apkGradle 依赖在你的项目的 build.gradle 文件添原创 2016-11-20 22:23:06 · 5051 阅读 · 6 评论 -
Android 四种启动模式和 Activity 的 Flag
启动模式 1. standard 标准启动 标准模式,也是默认模式。每次请求启动 Activity 的时候,都会重新创建这个 Activity 的实例。 2. singleTop 栈顶复用 所谓栈顶复用就是,如果请求启动的 Activity 处于这个任务栈的栈顶,不会直接创建新的 Activity 实例,而是调用此 Activity 的 onNewIntent 方法。 如果请求启动的原创 2016-09-20 19:18:15 · 543 阅读 · 0 评论 -
Android Support 库 24.2.0 正式发布
近日,Google正式发布更新了Android Support Library Revision 24.2.0 版本。这次更新绝对满足了每一位 Android Developer 的胃口,亦枫也是第一时间整理,翻译学习,记录于此,快来看看都有哪些变化吧。 值得注意的是,24.2.0版本的Support包不再支持Android 2.2(API Level 8)以及更低版本,而之前仅存在于这些系统的c转载 2016-09-07 22:25:49 · 2953 阅读 · 3 评论 -
Android DownloadManager 使用简介
由于项目需要,用到了 DownloadManager,现在记录下。 1 DownloadManager 时 android api 9 之后添加的,那么需要你的 app 的minVersion >= 9;2 AndroidManifest中添加权限<uses-permission android:name="android.permission.INTERNET" /><uses-permiss原创 2016-08-22 19:32:25 · 996 阅读 · 0 评论 -
Glide 集成 OkHttp2.x 、OkHttp3.x 和 Volley
由于 Android 6.0 以后废除了 httpclient , glide 加载网络图片需要自己绑定网络访问库了一 添加 glide 依赖在 build.gradle 添加dependencies { ... compile 'com.github.bumptech.glide:glide:3.7.0' ...}二 集成网络访问库1 集成 okhttp2.x在原创 2016-08-02 16:59:02 · 3239 阅读 · 1 评论 -
ColorViewPager--动态改变ViewPager的背景,给你一个漂亮的ViewPager
在做一个天气应用的时候,做了这么一个控件,就是滑动viewpager的时候,自动改变viewpager的背景颜色,以达到一个较好的视觉效果,具体的效果可以看我的应用。 现在简单说一下大概的思路。 其实没有太难的东西在里面,主要就是在滑动的时候,利用ValueAnimator来动态的改变viewpager的背景做的。代码已开源,点击就可以得到,下面介绍下关键点。 /** * 颜色的原创 2015-07-17 22:42:01 · 1693 阅读 · 0 评论 -
Android混淆之ProGuard
先简单介绍下ProGuard,ProGuard是一款用来混淆java源码的工具。由于java的一次编写,到处运行的特性,生成的字节码很容易被反编译,很容易将自己的代码暴露,混淆器就是用来解决这个问题的。 将java源码的类拆分为几个没有实际意义的名字的类,并将类的属性和方法也重命名为无实际意义的属性名和方法。这个就是混淆器的基本原理。 我们今天要说的ProGuard就是这样的一款混淆器。 网上原创 2015-07-20 21:56:15 · 547 阅读 · 0 评论 -
Android总结之PopupWindow
PopupWindows相信大家都不会陌生了。PopupWindows可以做出很多很好的效果。前几天做一个控件的时候正好用到了,而且也碰到了问题,今天正好就总结下,也算是一个总结。多总结才能更好的进步。如何自定义PopupWindow的布局这个问题相信大家都知道了,还是简单提一句。可以通过 setContentView() 方法来设置自定义布局/** * <p>Change the p原创 2015-07-21 22:35:30 · 897 阅读 · 0 评论 -
Service的onStartCommand方法空指针错误
Service的onStartCommand方法空指针错误在由于项目需要,在开发中使用了Service,但是测试发现有时会程序会崩溃掉,通过查阅log发现以下提示java.lang.NullPointerException,Attempt to invoke virtual method 'java.lang.String android.content.Intent.toString()' on原创 2015-08-13 11:38:56 · 1092 阅读 · 0 评论 -
Android NavigationBar 显示 Menu 按键
”’ java /** * 显示导航栏的虚拟menu键 */ private void showNagtiveMenu() { int menuFlag = 0; try { menuFlag = WindowManager.LayoutParams.class.getField(“FLAG_NEED原创 2016-04-19 17:02:40 · 1987 阅读 · 0 评论 -
Android -- is 32-bit instead of 64-bit
用 android studio 开发 app 的时候发生了 java.lang.UnsatisfiedLinkError: dlopen failed: "lib_xyz.so" is 32-bit instead of 64-bit最后是还是如此解决的,在build.gradle中加上defaultConfig { ...... ndk { abiFilters "原创 2016-05-26 16:27:01 · 7437 阅读 · 1 评论 -
Android Studio javadoc 乱码问题
在把自己的 lib 库上传到jcenter上的时候,需要 javadoc ,一开始javadoc 编译不过先,后来还乱码,现在记录下来task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources'}task javadoc(type: Javadoc) {原创 2016-07-11 10:13:55 · 689 阅读 · 0 评论 -
Android Studio 单独编译一个 Module
现在我的一个 project 下面有多个 moudle ,一开始不知道如何单独编译某个 moudle , 现在记录下./grawdlew your_moudle_name:task_name原创 2016-07-11 10:16:30 · 14894 阅读 · 0 评论