- 博客(71)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注

原创 MVP模式最佳实践
1. 摘要 MVP(Model-View-Presenter)模式通过Presenter解决了Activity、Fragment等在MVC(Model-View-Controller)中太臃肿的问题。 Google给出了开源代码,向大家阐述了他们对于MVP模式的理解和建议:https://github.com/googlesamples/android-archit
2018-01-14 21:03:41
1334

原创 设计模式-中介者模式(Java实现)
中介者模式可以把互相关联的两者解耦。这里的互相关联,就是关系数据库中的关联关系。如班级和学生的关系,每个班级有多个学生,但每个学生只属于一个班级。(关系数据库中的一对多关系)通过中介者模式,就能很好的实现一对多、多对多关系。本文仅介绍一对多的实现,多对多的实现与之类似,读者可举一反三。
2017-07-30 20:59:37
411

原创 设计模式-观察者模式(Java实现)
1. 摘要观察者模式可以完美地将观察者和被观察者对象分开[1]。观察者模式,类似于订阅-发布模型:如报社提供报纸订阅的服务,居民购买报纸订阅的服务。报社和居民并不需要直接认识对方。但订阅报纸的居民,每天都能收到报社发布的日报。2. 观察者模式UML图Observer即订阅者的interface,Observable即订阅主题的抽象类。Observable(订阅主
2017-07-23 11:33:43
1167

原创 Android TextView重写onMeasure和onDraw显示无拉伸图片(含实现代码链接)
1. 摘要: 论坛上遇到个小伙伴求助,“如何防止Android的TextView背景图片被拉伸”。搜到了一篇博客《Android TextView里直接显示图片的三种方法》[1]。方法一:重写TextView的onDraw方法;方法二:利用TextView支持部分Html的特性,直接用api赋图片;方法三:用ImageSpan和SpannableString。美中不足的是,并未给
2017-04-08 22:27:13
2739

原创 Android Activity生命周期--应知应会
1. 摘要 谷歌中国已经可以访问了,本博客主要依赖于https://developer.android.google.cn/reference/android/app/Activity.html[1]。除此之外,在看谷歌官网之前,不少Activity生命周期的知识,都来自于《Android开发艺术探索》[2]一书。这篇博客,也许一些知识及观点,借鉴于它。2.
2017-04-06 23:35:18
666

原创 Android源码编译、下载、导入Android Studio过程记录(MacOS 10.12)
1. 摘要:Google官方的Android源码下载及编译文档,请参考https://source.android.com/source/initializing.html[1]本文主要参考了《Android源码到下载、编译与导入到Android Studio》[2],MacOS 10.11可以直接去看它,也可以借鉴本篇的一些其它参考资料。除此之外,遇到的其它问题,主要参考《Mac上下
2017-04-02 23:20:42
1064

原创 Android使用UncaughtExceptionHandler捕获异常--并非如此
网上有很多关于UncaughtExceptionHandler,但都未分析到其本质。本文从源码出发,以事实为证,剖析了UncaughtExceptionHandler的用法和效果。
2016-09-27 13:20:56
822
原创 No variants found for ‘:app‘. Check build files to ensure at least one variant exists.
本文介绍了android studio升级之后,如何解决编译问题:No variants found for ':app'. Check build files to ensure at least one variant exists.
2023-05-27 17:10:35
14768
4
原创 Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported
Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported
2023-04-05 17:36:14
1493
1
原创 Android Studio Connect to repo.maven.apache.org:443 failed: Connection time
解决了Android Stuido连接repo.maven.apache.org失败的问题
2023-04-02 16:50:41
2223
翻译 Java Native Interface Specification Contents--Chapter 1: Indruction(翻译)
原文链接: https://docs.oracle.com/en/java/javase/16/docs/specs/jni/第一章:介绍 这一章介绍了Java Native Interface(Java本地接口)(JNI)。JNI是一个本地编程接口。它使得Java代码可以在Java虚拟机中,调用由其他编程语言所写的应用程序和库,如C,C++和汇编。 JNI最大的好处是:它对底层JAVA虚拟机的实现
2022-11-05 21:57:33
255
原创 dlopen failed: library “libc++_shared.so“ not found
编译opencv库时,解决了ndk-build方式下,dlopen failed: library "libc++_shared.so" not found。
2022-05-10 11:24:44
4963
3
原创 invalid stream header: EFBFBDEF问题解决--ISO8859-1
Java系列化invalid stream header: EFBFBDEF问题解决,使用ISO8859-1方案。
2022-02-04 17:04:02
6585
原创 如何通过pk8和pem生成jks
下载keytool-importkeypairkeytool-importkeypair -k platform.pk12 -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform(通过platform.pk8和platform.x509.pem生成platform.pk12。其中,密码为android,别名为platform)keytool -v -importkeystore -srckeystore platfor.
2021-08-04 15:24:20
1245
原创 Hello JNI:基于MinGW的Windows10系统JNI调用
操作系统:Windows10准备工作:安装并配置JDK环境[1]安装并配置MinGW环境[2]安装Windows Terminal实践步骤:编写Java代码考虑到实际项目中,都是在项目文件夹内。所以,示例也写在某个项目中。示例项目所在路径为:D:\Code\Java\afunx\HelloJNI示例项目中java文件路径为:D:\Code\Java\afunx\HelloJNI\src\com\afunx\demo\jni\HelloJNI.java具体java代码如下:pac
2021-06-12 11:52:24
1257
1
原创 MeasureSpec源码分析
MeasureSpec源码分析 MeasureSpec是View.java中的静态内部类。 以下源码来自于Android 27(Android 8.1 Oreo) /** * A MeasureSpec encapsulates the layout requirements passed from parent to child. * Each MeasureSpec represents a requirement for either the width or the
2021-01-31 21:24:37
301
原创 Markkdown编辑使用笔记
自定义目录标题:这是一个自定义目录标题标题:(最多只有六级标题)# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题首行缩进[1]半方大的空白 或 全方大的空白 或 不断行的空白格 或 上下角标上角标:<sup> 上角标内容下角标:<sup> 下角标内容代码片段同行代码片段: ```同行码片段```换行代码片段(java也可以换成..
2021-01-17 17:07:55
146
原创 getChildMeasureSpec()源码分析
getChildMeasureSpec()源码分析 getChildMeasureSpec()方法是ViewGroup.java中的关键代码。所有的ViewGroup在测量child view时,最终都会调用到该方法。 以下源码来自于Android 27(Android 8.1 Oreo) /** * Does the hard part of measureChildren: figuring out the MeasureSpec to * pass to a par
2021-01-17 16:53:32
584
原创 解决华为InputMethodManager mLastSrvView内存泄漏问题
参考了博客:https://www.jianshu.com/p/95242060320f但实现与其不同,具体实现代码如下:import android.content.Context;import android.support.annotation.NonNull;import android.view.inputmethod.InputMethodManager;impo...
2019-09-16 23:05:54
1421
1
原创 Android Shader着色器浅析
Shader着色器是计算机图形学中的概念。在Android开发中,Shader的主要用法是:paint.setShader(shader);canvas.drawXxx(xx, xx, xx, xx, paint);shader就是着色器。paint就是涂料的意思。canvas是画布的意思。通俗地说,shader就像是钢笔,paint就像是钢笔内的墨水,canvas就像是书写的纸张...
2019-03-12 00:28:12
293
原创 Android动画之Interpolator
Android源码中,有两个Interpolator。一个是frameworks/base/graphics/java/android/graphics/Interpolator.java。另一个是frameworks/base/core/java/android/view/animation/Interpolator.java。今天想要聊的是后者。frameworks/base/core/...
2019-03-10 21:12:37
319
原创 android Scroller浅析
Scroller主要用在View的弹性滑动上。Scroller用法主要分为下面三步:1.Scroller scroller = new Scroller(mContext);2./** * @param startX 起始坐标x * @param startY 起始坐标y * @param dx x坐标的变化量,如果...
2019-03-10 00:11:13
301
原创 View的setWillNotDraw()方法
View中有一个setWillNotDraw()方法,代码如下:public void setWillNotDraw(boolean willNotDraw) { setFlags(willNotDraw ? WILL_NOT_DRAW : 0, DRAW_MASK);}View中,对于WILL_NOT_DRAW是这样定义的:/** * This view won't ...
2019-03-08 23:45:05
4609
1
原创 理解MeasureSpec
MeasureSpec是View.java中的一个静态类:public static class MeasureSpec { private static final int MODE_SHIFT = 30; private static final int MODE_MASK = 0x3 << MODE_SHIFT; // 父容器对子View没有任何限...
2019-03-08 00:33:34
186
原创 android适配之px,dp,sp
1. px(pixel):像素,1px就是屏幕上的一个物理像素点。2. dp(dip, device indepent pixels):设备独立像素。3. sp(scale independent pixels):缩放独立像素,与dp相似,但会根据用户的系统设置再次进行缩放。4. dpi(dots per inch): 对角线每英寸的像素点个数,它的计算公式如下: 5. ...
2019-03-06 23:33:09
188
原创 RecyclerView notifyItemInserted(0)没有动画效果
本文给出了RecyclerView notifyItemInserted(0)没有动画效果的解决方法
2017-08-13 19:37:18
5381
原创 设计模式-单例模式(Java实现)
1. 摘要单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。2. 单例模式的分类单例模式主要分为4种方式:饿汉模式(由Early音译过来,具体含义为使用之前,已完成初始化)懒汉模式(由Lazy音译过来,具体含义为使用之时,才进行初始化)2.1 非线程安全2.2 直接同步2.3 双重校验锁静态内部类模式(利用了classloader的
2017-07-16 08:25:00
296
原创 Poker Ⅱ 机械键盘使用说明书
编程说明按PMode(FN+右CTRL)进入编程模式(空格右灯闪烁)按想要对其编程的建(空格右灯长亮)键入编程内容然后按PN(空格右灯再次闪烁)重复步骤2和步骤3可编程其他键按PMode(FN+右CTRL)退出编程模式(空格右灯熄灭)备注:支持FN层编程,在选键状态时可以对FN组合键(例如:FN+A)编程在选键状态(步骤1)打开文书软件(比如.txt型文本文档)并按
2017-07-09 22:45:27
27962
4
原创 Java合并jar包方法
1. 摘要:在写SDK时,经常需要把多个jar包合并为一个。有很多工具可以使用。这里介绍如何使用java提供的工具jar来完成多个jar包合并的方法。2. 方法:$ mkdir tmp $ cd tmp $ jar -xf ../jar1.jar$ jar -xf ../jar2.jar$ jar -cvf combined.jar -C tmp .3. 引用:
2017-06-12 12:26:24
6066
原创 ImageView ScaleType详解
ImageView scaleType值的博客有不少,但感觉写得都不够精确。最近正在看了一本书《基于Material Design的Android用户界面设计》[1]。该书对于scaleType的解释,十分准确、详细。
2017-05-26 23:30:16
420
翻译 Butter Knife Field and method binding for Android views
1. 摘要 JakeWharton/butterknife[1]是一个支持Android开发通过注解来减少代码的一个开源库。本文翻译了博客《Butter Knife Field and method binding for Android views》[2]。但该链接需要翻墙才能阅读。翻译该博客以便于后来者学习和使用butterknife。2. 正文2.1 介绍
2017-04-23 22:43:44
417
原创 The APK file xxx.apk does not exist on disk. Error while Installing APK
0. 摘要 今天遇到一个问题:The APK file xxx.apk does not exist on disk. Error while Installing APK。网上搜了一些解决方法,但都未能解决。后来,突发奇想,感觉是之前自己改过Instant Run,所以导致这个问题。经过实践检验,果然如此。1. 问题 The APK file xx
2017-04-21 12:27:37
3396
原创 ReactNative might be related to https://github.com/facebook/react-native/issues/4968
1. 摘要 ReactNative在开发的时候,会遇到很多坑。需要我们根据日志来解决。把解决经过记录下来,方便之后的开发人员来搜索解决办法。2. 日志Loading dependency graph, done.error: bundling: UnableToResolveError: Unable to resolve module `react/lib/
2017-04-11 16:13:36
4981
2
原创 Failed to sync HAX vcpu context(MacOS Android虚拟机无法启动)
1. 现象:Mac环境下,无法启动AndroidStudio中的Android虚拟机,AVD可启动,但相关Emulator启动最后会闪退,无法看到log。2. 解决过程:($ANDROID_HOME为Android Sdk路径) cd $ANDROID_HOME查看AVD列表:./android list avd结果为:********************
2017-03-30 00:33:42
2696
原创 Android 6.0动态权限申请--事例代码
Android 6.0之后,为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请。并且,Android 6.0之后,将权限分为普通权限和特殊权限。可以这样理解,Android 6.0之前,所有的权限都是普通权限,只要用户在安装时确认权限即可。Android 6.0之后,有部分权限变为特殊权限,需要应用运行时动态申请。这里给出项目中写的模版代码。模版代码的目的为:动态申请多个
2016-12-20 23:43:17
546
原创 Windows .vbs hello world
在某视频看到的小玩意,纯属娱乐。我是在win10下试验成功的,文件格式为.vbs。代码如下:CreateObject("SAPI.SpVoice").Speak "你好"然后,win10运行该脚本,就能听到比较僵硬的声音。中文、英文都可以,估计支持多国语言吧。
2016-12-20 22:36:42
1408
不要总是弹广告可以么!!!!!!!!!!!!!!!!!!!!!!!!
2021-07-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人