- 博客(75)
- 资源 (1)
- 收藏
- 关注
原创 Mac基本配置
Terminal配置原生终端不支持git自动补全,尝试了几个方案,最终还是无效,所以索性换成了zsh方式一:自动安装wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh方式二:手动安装git clone git://github.com/robbyrussel...
2018-08-17 13:21:27
431
转载 java注解与APT技术
1,基本概念什么是注解? 注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。什么是元注解?简单来说,就是注解的注解,元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们
2017-11-13 14:46:41
11232
2
原创 使用Android Studio阅读AOSP源码
android studio不仅开发android程序非常方便,在阅读AOSP源码方面,也是相当的给力,其操作的顺滑性,要不source insight还要好,下面就分析一下如何将AOSP导入到android studio中,1,编译源码AOSP2,执行idegen.sh3,使用AS导入AOSP
2017-10-11 10:04:34
1567
原创 java设计模式之责任链模式
1,基本定义 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,请求者和处理者之间解耦,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。2,基本角色抽象处理者角色:定义处理方法,以配置是否具有下个节点(Handl
2017-09-25 18:12:11
327
原创 View和输入法的通信原理
考虑下面一个简单的场景:在一个界面中,只有一个EditText控件,当点击该控件时,输入法便会被调起来,供用户输入使用,用户输入文字后,上屏到EdxitText当中,那么问题来了,View如何与输入法(InputMethodService 以下简称IMS)交互, 1,一个界面中可能存在多个View,哪个view应该和IMS沟通?即沟通标注是什么? 我们知道,只有获取焦点的View,才能和IMS交
2017-09-25 10:03:06
603
原创 Android Err:no permissions (verify udev rules)
在linux开发android程序时,用真机连接电脑,打开手机的USB调试模式,使用Android Studio安装App,出现错误,使用adb 命令查看设备:win@spring:~$ adb devciesList of devices attachedD8YDU15906021739 no permissions (verify udev rules); see [http://de
2017-09-24 11:59:00
693
转载 优快云-markdown编辑器用法
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-09-24 11:42:11
822
原创 VM中,无法使用X86_64模拟器
在ubuntu虚拟机中,使用X86_64架构的Android模拟器,有时候会出现如下错误:emulator: ERROR: x86_64 emulation currently requires hardware acceleration!Please ensure KVM is properly installed and usable.CPU acceleration status: KVM
2017-09-22 10:25:47
6417
1
原创 Android 源码编译错误
Android 源码编译错误从Android7.0开始,编译AOSP源码时,默认使用jack工具链,以加快编译速度,然后并没有什么卵用,jack工具链bug多多,而且非常耗费内存,编译过程中经常出现OOM的错误,AOSP源码组估计知道这个事儿,特意在官网上写明了这一错误的处理方式,大致如下: Jack 问题排查 如果您的计算机在编译期间无响应,或者如果 Jack 编译因“Out of me
2017-09-21 17:38:00
961
原创 Android Design Widget(一)
NavigationView相关类图:主要类: NavigationMenuPresenter.java, NavigationMenu.java, OnNavigationItemSelectedListener.java, MenuInflater.java主流程:
2017-07-20 11:46:41
319
转载 Fork/Join并发编程
转自:http://ifeve.com/fork-and-join-java/如今,多核处理器在服务器,台式机及笔记本电脑上已经很普遍了,同时也被应用在更小的设备上,比如智能手机和平板电脑。这就开启了并发编程新的潜力,因为多个线程可以在多个内核上并发执行。在应用中要实现最大性能的一个重要技术手段是将密集的任务分隔成多个可以并行执行的块,以便可以最大化利用计算能力。处理并发(并行
2017-06-13 14:31:39
602
原创 显示文件中的所有字符
一般情况下,文件会将诸如换行符之类的字符隐藏掉,而在不同的系统上,换行符的标示并不一样, 比如在windows下,换行符号为“CRLF”;在linux下却是”LF”,那么我们如何查看这些隐藏的字符呢?借助Notepad++软件,查看方法如下:显示效果如下:CR的全称是carriage return,回车,\r,ASCII码为13;LF全称是linefeed,换行,\n,ASCII码为10
2017-06-09 19:33:50
1194
原创 文字高度与宽度研究
Android系统中,Paint类位于android.graphics包中,负责管理绘制几何图形、文本、Bitmap所需的样式和颜色信息。它有个静态内部类FontMetrics,该类用于描述拥有特定文本尺寸的字体的各类度量信息。FontMetrics类的实现如下:public static class FontMetrics { /** * The maximum
2017-06-09 16:39:58
413
原创 Android顶部状态栏和底部导航栏高度计算
项目开发中,经常会遇到屏幕高度适配的问题,状态栏和导航栏的高度计算,直接影响着App的展示效果,下面就终结一下两种控件高度的计算方法1, 顶部状态栏(status bar)private int getStatusBarHeight() { Resources resources = mActivity.getResources(); int resourceId = resourc
2017-05-23 22:28:03
8693
原创 Git Error:Please move or remove them before you can merge
使用Git进行版本更新时,经常会遇到如标题的错误:> git pull Updating bb0e8f1error: The following untracked working tree files would be overwritten by merge:解决方法也很简单,直接在当前项目所在目录执行如下命令:git clean -d -fx ""各个参数的具体含义如下:x ----
2017-05-23 11:39:54
5696
转载 Textview设置文字样式和颜色
1. 自定义字体可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的Typeface又使用TTF字体文件来设置字体所以,我们可以在程序中放入TTF字体文件,在程序中使用Typeface来设置字体:第一步,在assets目录下新建fonts目录,把TTF字体文件放到这里。第二步,程序中调用:TextViewtv = (TextView)
2017-04-20 20:35:47
7925
原创 java读取文件API速度对比
上一篇我们介绍了使用java写入到文件,不同io类速度差异较大,本篇我们将介绍从文件读取数据,速度的差异。 测试文件text01.txt,text02.txt,text03.txt, 文件大小均为85938KB, 测试代码:package com.win.sample;import java.io.BufferedInputStream;import java.io.BufferedOutput
2017-03-28 18:20:39
5480
原创 java 文件写入API速度对比
在平时开发中,需要向文件中写数据的操作,用的非常多,java中比较常用的类有FileOutputStream、BufferedOutputStream和BufferedWriter,这三个类在写文件的速度上有些差异,下面通过测试看一下差异有多大, 测试场景是,向文件写入循环写入数据:public class Trade { // 先设定写入10000行数据 private stati
2017-03-28 15:59:14
4827
原创 Gradle sync failed: Could not find com.android.tools.build:gradle:2.2.3
使用Android studio导入工程后,gradle编译时遇到如下错误: Gradle sync failed: Could not find com.android.tools.build:gradle:2.2.3. Searched in the following locations: file:/D:/Program Fil
2017-03-27 16:34:01
11481
2
原创 JsBridge基本用法
Android开发中,由于Android系统的碎片化比较严重,开发者多数时间放在UI的适配上,使用原生控件开发耗时耗力,而且在实现复杂界面时,原生控件的布局能力较弱,一种常见的方案是使用H5来负责复杂界面的布局,用Android提供的原生控件WebView进行加载,但界面和系统的逻辑交互以及数据交换,又成为了一个问题,JsBridge的诞生正好解决了这一难题。1,JsBridge基本概念Androi
2017-03-27 15:57:03
6133
原创 ubuntu虚拟机忘记密码
安装在vmware中的虚拟机忘记密码 解决方法如下(以ubuntu为例): 1,重启ubuntu,随即长按shift进入grub菜单; 2,选择recovery mode,回车确认; 3,在Recovery Menu中,选择“Root Drop to root shell prompt”,回车确认; 4,进入shell界面,使用p
2017-03-27 08:59:30
3161
原创 Repo切换分支与同步代码
ALertDialog作为Android原生控件,使用简单方便,日常开发中,我们可能根据需求,实现不同的视觉效果,比如修改对话框显示位置,文字颜色和大小,对话框的宽高等,下面将讲述一些常用需求的解决方案1 修改AlertDialog宽度2 去除阴影效果3 去除黑色背景
2017-03-22 16:53:29
47211
原创 AlertDialog常见问题汇总
ALertDialog作为Android原生控件,使用简单方便,日常开发中,我们可能根据需求,实现不同的视觉效果,比如修改对话框显示位置,文字颜色和大小,对话框的宽高等,下面将讲述一些常用需求的解决方案1 修改AlertDialog宽度2 去除阴影效果3 去除黑色背景
2017-03-22 16:52:56
1642
原创 LocalBroadcastManager用法
在Android系统中,Broadcast是一种在程序中广泛应用的机制,其作用主要是在程序内或程序间传递消息,基本原理是广播监听者注册监听感兴趣的广播,收到广播后进行自身逻辑的处理。 Android系统提供的基本组件是BroadcastReceiver,其设计初衷是从全局考虑,可以方便应用程序和系统、应用程序之间、应用程序内的通信,所以对单个应用程序而言 这种方式存在安全隐患 (恶意程序脚本不断的
2017-03-16 09:43:11
664
原创 sfgdsg
private static LocalBroadcastManager mInstance; public static LocalBroadcastManager getInstance(Context context) { synchronized (mLock) { if (mInstance == null) {
2017-03-16 08:59:55
281
原创 java类型转换:enum与int
Enum类是JDK1.5引入的新特性,存放在java.lang包中,项目开发中,大多用于表示当前状态,例如:private enum Status { START,RUNNING,FINISH,ERR}比定义静态整型变量简洁方便,借助Enum类的成员方法ordinal() 转换成int类型非常容易:int tmp = Status.RUNNING.ordinal();System.out
2017-03-14 10:40:53
3204
1
原创 显式调用与隐式调用
Android 开发中,对于组件(Activity,Service)的调用有两种方式:显示调用和隐式调用,我们通过一个例子,展示一下二者的差异。 新建一个项目,里面包含TestActivity.java和WinService.java两个类,public class MainActivity extends AppCompatActivity { private ServiceConnect
2017-03-14 09:45:26
6468
原创 Adb error: more than one device/emulator
项目开发中经常需要使用adb命令进行调试,当手机连接电脑,准备使用adb shell命令是,出现如下错误C:\Users\hzk\ adb shell error: more than one device/emulator 从错误提示看出,是电脑上连接多个设备,导致adb shell 命令不知道操作哪一个,才爆出错误,使用adb devices查看一下:C:\Users\hzk\ adb dev
2017-03-10 13:32:41
7523
原创 Android Studio配置文件修改
当下Android App开发基本都转向了使用Android studio(简称AS),AS是基于Idea Intellij平台开发的,非常稳定,并且扩展性比较好,由Idea Intellij衍生出来的平台还有很多,比如用来开发python项目的Pycharm,用于开发PHP项目的PHPStorm等,这一类的工具有一个特性,即会对项目文件构建索引,便于查阅,并且编译速度快,但也有一个缺点,就是假如项
2017-02-17 22:25:35
8933
原创 Java设计模式之模板模式
模板概述模式定义模板方法模式在项目开发中比较常见,它是一种基于继承的代码复用的模式,其基本定义如下: 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中实现,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤(具体实现)。模板方面需要抽象类和具体子类之间的协作,抽象类负责给出一个算法的基本框架,具体子类负责算法的具体逻辑执行。代表这些具体逻辑步骤的方法称做基本方法(p
2017-02-13 15:34:27
348
原创 markdown编辑器语法(优快云版)
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2017-02-13 12:48:39
405
原创 Activity启动模式的研究
activity一共有四种启动模式,启动模式和Task密切相关1,standard,一个Task中可以有多个相同类型的Activity(不是同一个Activity对象),例如一个Task中有A,B,C三个Activity,如果再启动A类的Activity,则Task中的顺序就为A,B,C,A。standard为activity的默认启动模式import android.app.Activi
2014-06-19 23:26:13
426
原创 android通知栏总结
http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2113249.htmlhttp://chenxu.wo.blog.163.com/blog/static/50239687201162310620634/http://www.2cto.com/kf/201302/187381.html
2014-05-30 16:25:58
465
转载 startActivityforResult()的用法
举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。/*****************************/ 华丽丽的分割线 /*****************************/目的: A.java 是主界面
2013-05-16 13:10:26
446
转载 Android 锁屏机制
Android 禁止系统休眠,使屏幕不变暗,保持游戏中屏幕高亮实现这一功能的方法有两种,一种是在Manifest.xml文件里面声明,一种是在代码里面修改LayoutParams的标志位。具体如下:1、在Manifest.xml文件里面用user-permission声明。代码如下: 这种方法,在安装apk时,系统会提示安装人是否允
2013-05-16 13:02:32
1836
转载 SQL语句大全
经典SQL语句大全 一、基础1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mss
2013-05-14 10:47:01
352
转载 Android学习笔记--Binder
(一) 概述 android的binder机制提供一种进程间通信的方法,使不同一个进程可以以类似远程过程调用的形式调用另一个进程所提供的功能。binder机制在Java环境和C/C++环境都有提供。 android的代码中,与C/C++的binder包括一些类型和接口的定义和实现,相关的代码在下面这几个文件中: frameworks\bas
2013-05-06 16:37:44
494
转载 android消息处理机制
Android消息处理机制Google参考了Windows的消息处理机制,在Android系统中实现了一套类似的消息处理机制。学习Android的消息处理机制,有几个概念(类)必须了解:1. Message消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程。2. Message
2013-05-06 16:35:43
534
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人