- 博客(135)
- 资源 (10)
- 收藏
- 关注

转载 【Android】Gadle改变应用名称(appName)的两种方法
应用场景App在debug/release编译环境下,想通过改变appName来给予区分。productFlavors增加各种编译参数时,比如更换applicationId包名,appName也需要跟着变动。方法一:设置manifestPlaceholdersandroid { ... ... defaultConfig{ ... ... manifestP...
2018-05-10 15:07:16
2561
转载 Kotlin基本类型自动装箱的一点问题
在Kotlin官方文档介绍基本类型时,给我们说明了在有些情况下会对基本类型自动进行装箱操作。 但是具体是如何进行装箱,以及何时进行装箱缺没有提供详细介绍。只是提供了一个例子,如下:val a: Int = 10000print(a === a) // Prints 'true'val boxedA: Int? = aval anotherBoxedA: Int? = aprint(boxe...
2018-02-28 14:19:09
439
转载 java的动态代理机制详解
在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而AOP的原理就是java的动态代理机制,所以本篇随笔就是对java的动态机制进行一个回顾。在java的动态代理机制中,有两个重要的类或
2017-07-11 14:50:49
471
转载 详解 Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
Canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)第一个参数是图片bitmap第二个是对图片的裁剪 也就是说你想绘制图片的哪一部分If the source rectangle is not null, it specifies the subset of the bitmap to
2017-04-11 17:27:54
2753
转载 Android开发之getMeasuredWidth和getWidth区别从源码分析
转载请注明出处:http://blog.youkuaiyun.com/dmk877/article/details/49734869 我相信很多人对getMeasuredWidth和getWidth方法(getMeasuredHeight和getHeight类似这里仅以getMeasuredWidth和getWidth为例)都有过疑惑,并且网上去查阅资料看后也似懂非懂感觉,甚至有网上
2017-04-08 14:06:15
586
转载 自定义View获取dimen值得三个方法:getDimension,getDimensionPixelOffset和getDimensionPixelSize
getDimension和getDimensionPixelOffset的功能类似,都是获取某个dimen的值,但是如果单位是dp或sp,则需要将其乘以density如果是px,则不乘。并且getDimension返回float,getDimensionPixelOffset返回int.而getDimensionPixelSize则不管写的是dp还是sp还是px,都会乘以d
2017-03-03 19:19:50
1501
转载 Android中px, dp, sp单位转换
开发中经常会遇到尺寸之间的转换,比如设计图中尺寸单位基本都是像素(px),但是对于Android设备来说直接使用像素作为单位肯定是不行的。同样的10px,在分辨率很低的手机和分辨率很高的手机上显示的实际长度肯定是不一样的,所以Android团队才会采用dp作为Android开发尺寸单位,dp是一种相对单位(根据屏幕的像素密度,也就是每英寸像素数的不同而调整),能够尽量保证相同数值的dp长度在不同的
2017-02-26 15:59:13
1306
转载 android为什么说字体有的时候不应该用SP
1.png.jpeg2.png.jpeg应该可以明显的看到,第一张图中红色框中的“分钟”两个字显示不完整,原因就是:1、用户在设置中调节了字体大小,2、红色框布局中TextView使用的是单位为“sp”,并且布局宽高也是固定的。在这里引入一个知识点:关于sp文档的描述为:Scale-independent Pixels – This is l
2017-02-26 15:51:40
2548
转载 JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )
这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解JAVA的底层和运行机制有比较大的帮助。废话不想讲了.入主题:先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只
2017-02-26 12:14:26
474
原创 Android混淆 笔记
Android 混淆初记混淆配置文件由三部分组成:1.默认配置 getDefaultProguardFile('proguard-android.txt') 或者 getDefaultProguardFile('proguard-android-optimize.txt') 该文件路径:a.版本:Starting with version 2.2 of the And
2016-12-28 10:11:10
2347
转载 本地与maven插件包
在AndroidStudio中自定义Gradle插件字数1829 阅读644 评论4 喜欢7我的优快云博客同步发布:在AndroidStudio中自定义Gradle插件转载请注明出处:【huachao1001的简书:http://www.jianshu.com/users/0a7e42698e4b/latest_articles】一直都想好好学习And
2016-12-04 10:31:09
3850
原创 Gradle执行顺序
1gradle的解析顺序:rootproject 的setting.gradle,然后是rootproject的build.gradle,然后是各个subproject。所以project下的build.gradle会先于app下的build.gradle。2在build.gradle中,我们可以通过apply plugin: 引入插件,也可以通过 apply from .grad
2016-12-01 21:55:46
6387
转载 How does Gradle know whether to do a single or multiproject build?
How does Gradle know whether to do a single or multiproject build? If you trigger a multiproject build from a directory with a settings file, things are easy. But Gradle also allows you to e
2016-12-01 08:53:56
438
转载 Android WebView clearHistory 失效的解决方案
为了让返回按钮控制WebView“返回上一页”,我处理了按钮消息并加入相关逻辑。同时为了复用WebView,我需要在特定的时候调用 WebView::clearHistory() ,不料WebView::clearHistory()并未起作用。原因是WebView::clearHistory()有个奇怪的特性,那就是只清除当前页之前的历史记录。假设当前页面为A,我调用WebView::cl
2016-11-22 15:36:47
5201
转载 Android中Java和JavaScript交互
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。如何实现实现Java和js交互十分便捷。通常只需要以下几步。WebView开启JavaScript脚本执行。WebView设置供JavaScript调用的交互接口。客户端和网页端编写调
2016-11-14 09:08:37
429
转载 Java泛型:泛型类、泛型接口和泛型方法
泛型类容器类应该算得上最具重用性的类库之一。public class Container{ private String key; private String value; public Container(String k,String v){ key=k; value=v;
2016-11-14 09:07:31
10491
转载 Android如何绘制视图,解释了为何onMeasure有时要调用多次
原文地址:How Android Draws Views 当Activity获取焦点的时候,它就需要绘制布局。Android框架会处理绘制过程,但这个Activity必须提供它布局树的根节点。 绘制过程是从布局的根节点开始的。这个过程需要测量和绘制布局树。绘制过程是通过遍历树和渲染每个与绘制区域相交的视图来处理的。接下来,ViewGroup职责就是请
2016-11-12 13:50:18
1840
转载 为什么自定义ViewGroup ondraw方法不会被调用
viewgroup的绘制严格来说是在dispatchDraw中完成,作为一个容器,绘制自己的孩子该通过dispatchDraw(canvas)实现。但是你非要在ondraw中也不会出错。但自定义ViewGroup ondraw方法不会被调用的根本原因是你的ViewGroup中还没有可绘制的内容。下面是详细解释:一,现象 android:id=
2016-11-12 10:09:33
425
转载 adb logcat 命令行用法
1. 解析 adb logcat 的帮助信息在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息;[plain] view plaincopyoctopus@octopus:~$ adb logcat --help Usage: logcat [options] [filterspe
2016-08-13 17:10:07
2916
转载 通过mapping.txt解析混淆apk的出错信息
一、eclipse导出混淆后的项目时,在项目根目录下会生成一个proguard文件夹,文件夹下包含dump.txt,mapping.txt,seeds.txt, usage.txt四个文件。 dump.txt 描述apk保重所有class的代码结构mapping.txt 列出了源代码与混淆后的类,方法和属性名字之间的映射。这个文件对于在构建之后得到的bug报告是有用
2016-07-02 15:48:27
2456
转载 话说apk打包流程梳理
简介一些初学Android的开发者可能只知道写完项目,然后点击AndroidStudio中的run按钮就可以把项目运行到手机或者模拟器上,而一个apk是怎么从编译打包到最后签名安装到手机上的原理不知道,这里就带领大家理解一下内部的原理简单build流程首先,我们看下官网介绍Building and Running Overview,官网给了我们一张非常简单的编译、打包、apk生
2016-06-25 15:51:13
583
转载 VIM 编辑器的使用_2
使用 VIM 做小的修改我们通常使用 x 命令来删除一个字符。实际上,我们可以选择更加好用的 d 命令来完成删除操作。d 命令(类似的还有 c、y 等命令)d 命令是一个特殊的命令,后面需要接上动作(motion),使用实例:dwI am a boy.光标位于 b 上时,输入 dw 将删除 boy 这个词。如果需要删除多个词,例如,删除 4 个词,可以使用 d4
2016-06-25 11:12:17
665
转载 VIM 编辑器的使用_1
VIM 中的”~”开头的行是文件中不存在的行。VIM 模式VIM 是一个多模式的编辑器:普通模式:在普通模式下,输入的字符将被解释为命令,我们输入的字符将显示在最后一行。无论在何种模式下,敲击”ESC”能够进入到普通模式。如果需要输入命令,那么应该切换到普通模式下。在插入模式下,输入的字符将成为插入的文本。通常情况,在普通模式下,敲入”i”(insert 的缩写)或者”a”
2016-06-25 11:10:29
476
转载 getWidth()和getMeasuredWidth()
view.getMeasuredHeight()可能隐藏在上头.可能在下头.如果view没有超出屏幕的时候view.getMeasuredHeight()有可能小于 view.getHeight()
2016-06-22 11:04:22
853
转载 requestDisallowInterceptTouchEvent---2
requestDisallowInterceptTouchEvent(true)方法是用来子View告诉父容器不要拦截我们的事件的,但是这个代码放的位置很重要,可能导致失效。首先我们要知道父类肯定能收到Down事件的,因为这个是事件的起源,系统默认在VIewGroup里把requestDisallowInterceptTouchEvent里把子View对于Down事件的拦截权利剥削了,有了这个Do
2016-06-22 10:03:32
519
转载 requestDisallowInterceptTouchEvent---1
当手指触摸到屏幕时,系统就会调用相应View的onTouchEvent,并传入一系列的action。当有多个层级的View时,在父层级允许的情况下,这个action会一直向下传递直到遇到最深层的View。所以touch事件最先调用的是最底层View的onTouchEent,如果View的onTouchEvent接收到某个touch action并作了相应处理,最后有两种返回方式return t
2016-06-22 09:58:47
334
转载 Android_UI_葵花宝典
1. 射鸡师 VS 攻城师 在日常的Andriod开发中经常会遇到各种各样的PK,其中设计师和工程师的矛盾非常突出,我们来看一下双方的主要矛盾。主要原因是由于设
2016-05-25 16:17:26
628
转载 Android通过Wifi来调试应用(win7版+局域网版)
前提:杀死使用ADB的程序,同一个局域网手机和电脑在同一个局域网断掉并杀死所有电脑程序能自动检测连接手机的,会提示要你装应用,帮你手机清理等等。因为,这些程序,原理就是通过ADB来进行连接,而我们将要通过ADB来完成效果。我就开着酷狗听歌,导致一直实现不成功,正是纳闷,后面想了下,才知道是这个原因。开发者选项没有网络ADB调试的系统1.手机连接电脑,并且手机启用usb调试的模式,跟
2016-05-24 14:35:04
1048
原创 Source_Code_Activity
时序图 wm ->WindowManager ->WindowManagerImpl ->1.ActivityThread---H(Handler) 1.1 handleLaunchActivity performLaunchActivity() -> mInstrumentation.newActivity()
2016-05-17 16:33:40
460
转载 View测量机制详解—从DecorView说起
很多朋友都沉迷于自定义View, 而自定义View离不开measure、layout、draw三个步骤,在测量方面,很多朋友仅仅是知道怎么去测量一个控件,而对于为什么要这么做等等问题都搞的不是很清楚,今天这篇文章我们就从View树的最顶层DecorView开始分析测量到底是怎么一回事。 这篇文章要解决的问题有:onMeasure的两个参数从哪来。最开始的参数是怎么计算出来的。测量规
2016-05-16 11:57:46
549
转载 Handler 之 ThreadLocal 相关
ThreadLocal其实在Handler 之 源码分析一文中,关于 Handler 有一点一直没说到。Handler 在创建的时候必须使用当前线程的 Looper 来构造消息循环,而自己手动创建的子线程默认是没有 Looper 的, 如果在一个子线程中创建 Handler ,就必须为这个子线程创建相应的消息轮训器,否则我们就会看到一个常见的异常Can't create h
2016-05-14 22:45:16
536
转载 .so 你懂的
早期的Android系统几乎只支持ARMv5的CPU架构,你知道现在它支持多少种吗?7种!Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。应用程序二进制接口(Application Binary
2016-05-08 14:23:11
1703
转载 Android_UI
不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做过一点安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家!1、了解几个概念(1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等
2016-05-02 10:34:53
466
转载 JAVA当中变量什么时候需要初始化?
1. 对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值。 默认值如下: Boolean false Char '\u0000'(null) byte (byte)0
2014-03-25 22:03:20
926
原创 服务器端防止Form表单重复提交
工程目录结构:主要代码:令牌类:package com.mth.token;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;import sun.misc.BASE64Encoder;
2014-03-20 09:11:41
1247
转载 MyEclipse中找不到BASE64Encoder解决方法
1.右键项目-》属性-》java bulid path-》jre System Library-》access rules-》resolution选择accessible,下面填上** 点击确定即可!!!2.在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示: Acces
2014-03-20 07:49:32
6267
原创 Response对象的encodeURL原理
Java Servlet API 中引用 Session 机制来追踪客户的状态。Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。当一个 Session 开始时,Servlet 容器将创建一个 HttpSession 对象,Servlet 容器为 HttpSession 分配一个唯一标识符,称
2014-03-19 21:51:58
1291
转载 JSP四大作用域
作用域规定的是变量的有效期限。1、如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。2、如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的
2014-03-18 23:26:03
670
转载 jsp九大内置对象详解
Request:请求对象Respone:响应对象Session:会话对象Application:应用程序对象Out:输出对象Config:配置对象Page:页面对象PageContext:页面上下文对象Exception:例外对象 request对象request 对象是 javax.servlet.httpS
2014-03-18 23:22:36
968
转载 验证用户名长度的正则表达式
用户名可能包含中文,中文按2位算代码下载地址:http://www.zuidaima.com/share/1550463222516736.htm转载请注明出处:验证用户名长度的正则表达式运行此代码截图如下: 满足此表达式:不满足此表达式: [java] view plaincop
2014-03-18 23:00:57
2895
深入探索Android热修复技术原理.pdf
2017-07-04
Rainer’s DHTML Library
2014-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人