自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 1241

原创 设计模式-中介者模式(Java实现)

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

2017-07-30 20:59:37 361

原创 设计模式-观察者模式(Java实现)

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

2017-07-23 11:33:43 1124

原创 Android TextView重写onMeasure和onDraw显示无拉伸图片(含实现代码链接)

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

2017-04-08 22:27:13 2670

原创 Android Activity生命周期--应知应会

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

2017-04-06 23:35:18 614

原创 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 1001

原创 Android使用UncaughtExceptionHandler捕获异常--并非如此

网上有很多关于UncaughtExceptionHandler,但都未分析到其本质。本文从源码出发,以事实为证,剖析了UncaughtExceptionHandler的用法和效果。

2016-09-27 13:20:56 749

原创 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 11706 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 751

原创 Android Studio Connect to repo.maven.apache.org:443 failed: Connection time

解决了Android Stuido连接repo.maven.apache.org失败的问题

2023-04-02 16:50:41 1610

翻译 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 189

原创 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 4201 3

原创 invalid stream header: EFBFBDEF问题解决--ISO8859-1

Java系列化invalid stream header: EFBFBDEF问题解决,使用ISO8859-1方案。

2022-02-04 17:04:02 5344

原创 2022精选博客书签

每年记录一下android问题解决使用的博客以及一些优秀博客。

2022-02-03 11:00:14 1266

原创 Android故事会:事件传递机制

以小故事形式,把初学者入门Android的事件传递机制。

2021-12-05 22:35:22 1368

原创 如何通过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 1014

原创 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 1170 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 249

原创 2021精选博客书签

KMP算法详解-实现作者以浅显易懂地方式,剖析了KMP算法的本质,并给出了一个实现

2021-01-27 22:45:59 247

原创 Markkdown编辑使用笔记

自定义目录标题:这是一个自定义目录标题标题:(最多只有六级标题)# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题首行缩进[1]半方大的空白 或 全方大的空白 或 不断行的空白格 或 上下角标上角标:<sup> 上角标内容下角标:<sup> 下角标内容代码片段同行代码片段: ```同行码片段```换行代码片段(java也可以换成..

2021-01-17 17:07:55 106

原创 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 508

原创 解决华为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 1338 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 238

原创 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 273

原创 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 238

原创 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 4225 1

原创 理解MeasureSpec

MeasureSpec是View.java中的一个静态类:public static class MeasureSpec { private static final int MODE_SHIFT = 30; private static final int MODE_MASK = 0x3 &lt;&lt; MODE_SHIFT; // 父容器对子View没有任何限...

2019-03-08 00:33:34 154

原创 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 157

原创 RecyclerView notifyItemInserted(0)没有动画效果

本文给出了RecyclerView notifyItemInserted(0)没有动画效果的解决方法

2017-08-13 19:37:18 5199 2

原创 设计模式-单例模式(Java实现)

1. 摘要单例模式可以保证系统中一个类只有一个实例,即一个类只有一个对象实例。2. 单例模式的分类单例模式主要分为4种方式:饿汉模式(由Early音译过来,具体含义为使用之前,已完成初始化)懒汉模式(由Lazy音译过来,具体含义为使用之时,才进行初始化)2.1 非线程安全2.2 直接同步2.3 双重校验锁静态内部类模式(利用了classloader的

2017-07-16 08:25:00 269

原创 Poker Ⅱ 机械键盘使用说明书

编程说明按PMode(FN+右CTRL)进入编程模式(空格右灯闪烁)按想要对其编程的建(空格右灯长亮)键入编程内容然后按PN(空格右灯再次闪烁)重复步骤2和步骤3可编程其他键按PMode(FN+右CTRL)退出编程模式(空格右灯熄灭)备注:支持FN层编程,在选键状态时可以对FN组合键(例如:FN+A)编程在选键状态(步骤1)打开文书软件(比如.txt型文本文档)并按

2017-07-09 22:45:27 26852 6

原创 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 5903

原创 ImageView ScaleType详解

ImageView scaleType值的博客有不少,但感觉写得都不够精确。最近正在看了一本书《基于Material Design的Android用户界面设计》[1]。该书对于scaleType的解释,十分准确、详细。

2017-05-26 23:30:16 381

翻译 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 383

原创 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 2931 1

原创 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 4910 2

原创 Unix Shell Bookmark

找出一个文件的所有硬链接

2017-04-01 20:04:23 539

原创 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 2526

原创 Android 6.0动态权限申请--事例代码

Android 6.0之后,为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请。并且,Android 6.0之后,将权限分为普通权限和特殊权限。可以这样理解,Android 6.0之前,所有的权限都是普通权限,只要用户在安装时确认权限即可。Android 6.0之后,有部分权限变为特殊权限,需要应用运行时动态申请。这里给出项目中写的模版代码。模版代码的目的为:动态申请多个

2016-12-20 23:43:17 511

原创 Windows .vbs hello world

在某视频看到的小玩意,纯属娱乐。我是在win10下试验成功的,文件格式为.vbs。代码如下:CreateObject("SAPI.SpVoice").Speak "你好"然后,win10运行该脚本,就能听到比较僵硬的声音。中文、英文都可以,估计支持多国语言吧。

2016-12-20 22:36:42 1342

STM32F446参考手册

STM32 F446参考手册(英文版),来自STM32官网。介绍了STM32 F446的使用。

2018-02-22

STM32F446数据手册

STM32 F446数据手册(英文版),来自STM32官网,介绍了STM32 F446的芯片资料。

2018-02-22

MacOSX10.11.sdk.tar.xz

MacOSX10.11 SDK tar.xz压缩包,支持MacOSX10.12编译Android 6.0源码

2017-04-02

huffman编码java实现

包含huffman编码java实现源程序、该java程序的javadoc文档、huffman编码简单原理ppt

2011-11-14

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

TA关注的人

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