自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alex Zhang的专栏

记录点滴学习

  • 博客(24)
  • 收藏
  • 关注

原创 Android中Scroller介绍

Scroller类作用实现平滑动画的,其实这个类并不是能实现滑动,它只能能帮助你计算出动画的过程,在动画的时间内,能告诉你变量的值。怎么做滑动的上面说了Scroller并不能做滑动,那么怎么实现活动呢。滑动依然是通过View类的scrollBy、scrollTo方法来实现。scrollBy和scrollTo方法有个缺点,就是滑动是瞬间完成的,就是会有卡卡的感觉,想要实现平滑的滑动,就需要结...

2019-07-25 16:57:44 212

原创 Android中位置相关几个值 left right top bottom scrollX scrollY等

left top right bottom我们知道android中的view会有四个api,分别对应着上、下、左、右四个位置,很多人都搞不清,这几个值是什么。这里简单说下getLeft 这个view的左侧相对于父view左边的距离getTop 这个view的上侧相对于父view上边的距离getRight 这个view右侧相对于父view左边的距离getBottom 这个view的底侧...

2019-07-25 10:37:02 341

原创 动态代理-cglib

什么是动态代理:要想知道什么是动态代理需要了解什么是静态代理,知道了静态代理后,动态代理就是在代码运行的过程中,生成了静态代理的代码。动态代理的实现:一般有两种方式来实现。java原生api提供支持,以及第三方的库,例如cglib。java apijava中可以通过Proxy类来生成动态代理实现,并通过InvocationHanlder来实现方法的拦截,缺点是,只能对接口实现动态代理...

2019-07-11 17:28:29 93

原创 Android7.0后版本升级问题

Android7.0后版本升级问题问题描述:android7.0系统及以上,通过隐形intent调用系统安装apk的方式进行版本升级失败。原方法:Intent intent = new Intent(Intent.ACTION_VIEW);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.setDataAndType(Uri.fr...

2019-07-09 20:39:35 576

原创 URLConnection下载文件时文件长度-1问题

在开发过程中一定会遇见这样的需求,从服务端下载一个文件,例如安装包等,在下载文件的过程中,一般会有进度条来显示加载进度。这时就会使用到文件总大小这个值了。通过urlConnection.getContentLength();方法得到的值为-1,这是什么原因呢,因为默认情况下,URLConnection会采用gzip的格式来接收文件流,所以得不到正确的值。可以使用如下的方式来获取:url...

2019-07-03 16:58:44 1985

原创 Android组件化探索与实践

Android组件化探索与实践在Android开发中,随着业务复杂性不断的增加,项目的代码量会不断的增大,这对于项目的维护提出了更大的挑战。Android的组件化开发就是旨在解决大型项目的可维护性、可扩展性的难题。一、组件化简介组件化是大型Android项目的一个好的解决方案。通过对项目工程进行组件化,利于代码的维护与扩展,特别是在多团队协作开发的模式中,尤其有效。对于Android组件化...

2019-07-03 10:42:26 768

原创 内存泄漏总结

内存泄漏在java开发、移动端开发中,由于JVM来负责对象的回收,所以内存泄漏是需要面对的问题java的垃圾回收机制比较常用的是两种算法,引用计数、根搜索。目前的jvm 的gc都是采用根搜索算法。如果到达gc root不可答,就应该被回收,类似下图中,d和e就应该被回收说到GC roots(GC根),在JAVA语言中,可以当做GC roots的对象有以下几种:1、虚拟机栈中的引用的对象...

2019-04-12 15:47:49 121

原创 Android反编译

androd的反编译主要涉及到3个工具,都以Mac版为例进行介绍:ApkTool 解包、打包工具其主要作用是反编译资源、manifest等,并不是反编译代码,反编译代码用后面的工具安装1. 将下载好的apktool文件与apktool_2.3.1.jar文件准备好,并将apktool_2.3.1.jar更名为apktool.jar;2. 将apktool.jar与apktool移动...

2019-04-12 14:40:48 95

原创 Java远程调试 Android APT Gradle插件的调试方法

远程调试技术有些时候想要在编译期间设置断点来调试,这个时候就需要远程调试技术了。使用场景这里举例两个使用场景,APT开发,Gradle插件开发APT当我们开发编译时注解相关功能时,需要使用这种调试方法来debug1.在terminal中输入:./gradlew --no-daemon -Dorg.gradle.debug=true :app:clean :app:compileD...

2019-04-12 14:21:55 603

原创 使用Jekins打andriod包、shell脚本上传

jekins配置新建job构建自由风格软件项目配置配置apk上传apk包打包成功后,需要将apk上传服务器,供测试同学来下载,使用shell脚本的方式来实现通过curl命令来和后端服务器进行交互#!/bin/bashcd `dirname $0`echo $1echo $2filePath=$2apkPath=$1echo $apkPathapkFi...

2019-04-12 14:15:11 269

原创 Android主线程looper是死循环问题

Android主线程是loop的死循环,这个死循环其实是使用了epoll机制,即消息队列中没有消息的时候,是处于睡眠状态,不占用cpu资源的。由于主线程是死循环,所以主线程的所有操作都得借助于消息队列,例如事件处理,例如界面的刷新等,所有的在主线程执行的代码都是如此。利用这个特性可以做很多的事情,例如统计帧率等。为什么主线程是死循环,而不发生ANR。 首先需要明确ANR发生的条件,发生ANR的条件

2017-08-15 15:27:45 789

原创 Android apk签名原理

Android apk的签名涉及到数字签名这样的一个技术,简单解释下数字签名。 我们知道非对称加密算法中设计到公钥和私钥,公钥可以分发出去,私钥是不可以分发出去的。公钥加密,私钥可以解密,私钥加密,公钥可以解密。 数字签名就是利用这个,使用私钥加密,如果用公钥可以解密成功,那么说明加密的人拥有私钥,这样就相当于做了身份验证了。先说下Android apk的签名过程。在Android apk签名过

2017-08-14 10:05:52 332

原创 dexclassloader与pathclassloader的区别

optimizedDirectory必须是一个内部存储路径,无论哪种动态加载,加载的可执行文件一定要存放在内部存储。DexClassLoader可以指定自己的optimizedDirectory,所以它可以加载外部的dex,因为这个dex会被复制到内部路径的optimizedDirectory;而PathClassLoader没有optimizedDirectory,所以它只能加载内部的dex,这些

2017-08-01 11:28:32 768

原创 Android APK安装过程

应用安装涉及到如下几个目录: system/app 系统自带的应用程序,无法删除 data/app 用户程序安装的目录,有删除权限。安装时把apk文件复制到此目录 data/data 存放应用程序的数据 Data/dalvik-cache 将apk中的dex文件安装到dalvik-cach

2017-07-30 16:17:22 297

原创 Android的生命周期和启动模式

Activity的启动过程是一个很复杂的过程,涉及了Instrumentation ActivityThread AMS(ActivityManagerService)等类。 ActivityThread和AMS之间的通信是跨进程的通信,采用的机制是Binder机制,具体就是利用ApplicationThread binder接口来完成。ApplicationThread是ActivityThrea

2017-07-09 18:27:40 190

原创 随笔

可以利用ContentProvider的call方法来实现跨进程通行。ContentProvider底层也是Binder机制。

2017-06-22 16:56:00 155

原创 Android Binder学习笔记

Android的Binder是一种跨进程的通信机制,和TCP机制很像,其实也可以抽象的进行分层,可以把Binder想象成一种跨进程通信的协议。学习Binder机制最好是以aidl为例,因为sdk会帮助我们将aidl文件生成利用Binder机制通信的代码,所以本篇以aidl为例来记录一下Binder机制的学习过程。在学习之前,和Binder机制相关的几个类需要介绍一下,主要有Binder, IBind

2017-06-20 11:23:03 277

原创 Android的View动画笔记

View动画分为4类平移 旋转 缩放 透明度View动画都是继承自android.view.animation.Animation(属性动画是在Animator包下),四类View动画对应4个Java类,TranslateAnimation RotateAnimation ScaleAnimation AphlaAnimation。View动画的原理,可以通过看源码分析了解,入口可以从View的st

2017-06-19 17:00:32 207

原创 Android View和动画--笔记

ListView:ListView并不会为每个item都建新的view实例,而是采用复用的方式。将屏幕上看不见的view复用。实现模式: adpter模式,观察者模式,view的复用机制。GridView的原理同ListView一样,而且adpter可以互用。RecyclerView: 比listview和gridview更加灵活。自定义View自定义view中比较重要的是measure layo

2017-05-09 18:06:05 190

原创 Android四大组件-学习记录

Activity的构成:window –>DecorView—>我们的布局 我们的布局文件挂载在DecorView的mContentParent的节点下Activity的4种启动模式:standard 默认的启动模式,可以被实例化多次,如果这个activity非常耗费资源,这种模式下,程序就很耗费资源singleTop 如果activity A已经在栈顶,那么再启动这个activity的时候,

2017-05-06 20:29:55 227

原创 CSS学习笔记(基本知识)

最近在自学web前端的一些知识。第一章 :几个常识如下1  html中注释是   css中注释/*        */2  元素可以利用里面的title属性来制作备选样式表,也可以通过将title属性设置为相同的值将样式表分组。3  在外部样式表中不可以有任何的标记元素,如果外部样式表想引用其他的样式表可以使用@import url() media;来引用其他的样式表,注意,i

2014-02-21 16:06:53 414

转载 Android Canvas绘图详解(图文)

Android Canvas绘图详解(图文)泡在网上的日子 发表于2013-03-05 19:33, 第 3375 次阅读 Canvas,android摘要 Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0。今天我们主要要了解的是2D相关的,如果你想看3D的话那么可以跳过这篇文章。 大部分2D使用的ap

2013-11-28 11:10:37 503

转载 Android Bitmap和Canvas学习笔记

原文地址http://www.cnblogs.com/feisky/archive/2010/01/10/1643460.html位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。1. 从资源中获取位图可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。当然,首先需要获取资源:        Resour

2013-11-28 10:32:44 386

原创 CSS学习笔记(字体)

最近在学习web的前端开发,所以打算写微博来记录在学习过程中学到的一些内容。今天在看css字体这一章,主要的属性有font-family, font-weight, font-size, font-style.font-variant是指定字体,可以指定具体的字体,也可以指定字体类,比较好的实践是在具体的字体后面同样指定字体类,这样在浏览器找不到指定的字体的时候会在字体类中找到相近的字体,同时

2013-11-20 14:45:14 593

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除