android
文章平均质量分 66
Markus.Zhao
这个作者很懒,什么都没留下…
展开
-
父scrollview拦截到其他子控件的touch事件的解决方法
概述父Scrollview中放置了一个RockerView,在RockerView中上下滑动时触发scrollview的滑动,导致了RockerView不能正常使用。解决原因是因为事件分发时被父容器view给消费了。所以导致子View没有获取到触摸事件,所以也就没有响应了。详见:Android事件分发机制深度分析(一)解决办法有很多,可以复写一个scrollview,在其中特别处理事件分...原创 2019-12-30 23:53:30 · 1224 阅读 · 0 评论 -
Android Studio 3.2配置ButterKnife
文章目录概述:安装Android butterknife Zeleny插件配置使用概述:ButterKnife是android studio 中一个自动生成和关联viewUI控件与view变量的一个工具,人称黄油刀,可以极大提高工作码代码效率,但不同的Android studio版本对应有不同的版本,下面是android studio 3.2版本的配置过程:安装Android butterk...原创 2019-11-29 00:02:55 · 246 阅读 · 0 评论 -
各国语言缩写以及国际域名缩写
文章目录各国语言缩写国际域名缩写各国语言缩写en 英文en_US 英文 (美国)ar 阿拉伯文ar_AE 阿拉伯文 (阿拉伯联合酋长国)ar_BH 阿拉伯文 (巴林)ar_DZ 阿拉伯文 (阿尔及利亚)ar_EG 阿拉伯文 (埃及)ar_IQ 阿拉伯文 (伊拉克)ar_JO 阿拉伯文 (约旦)ar_KW 阿拉伯文 (科威特)ar_LB 阿拉伯文 (黎巴嫩)ar_LY 阿拉...原创 2019-11-28 23:48:26 · 2216 阅读 · 0 评论 -
getDeclaredFields获取到$change以及serialVersionUID成员解决
概述最近在使用Android Studio时遇到使用getDeclaredFields获取到$change成员的问题,代码如下:public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protec...原创 2019-10-13 01:20:03 · 765 阅读 · 0 评论 -
Android(国际化)多语言的实现和切换
Android(国际化)多语言的实现和切换原创 2018-10-18 14:51:29 · 8983 阅读 · 0 评论 -
Android Java 代码检索工具Codota
Codota是一个捜索代码的利器。使用AI技术通过在IntelliJ或Android Studio中直接从数百万个程序中更快、更智能进行代码检索,更重要的是,codota不仅仅可以搜索Github, 还可以捜索一些开发者的Blog 和开发网站,功能非常强大。输入相关代码后即可进行查找,而且它还提供了 Android Studio的插件,可以非常方便地进行检索,简直就是一个代码版的GoogleC...原创 2018-09-29 16:30:55 · 2854 阅读 · 0 评论 -
Android studio 3.2 升级详解及Gradle配置
一直在使用Android studio 2.3.1版本,因为工作开发使用的都是这个版本,所以在经历了N次提示更新后,依旧还是没有升级,直到今天终于忍不住了,因为Android Studio 3.2版本在这个月发布了,增加了很多新特性,具体参见官方介绍吧:https://android-developers.googleblog.com/2018/09/android-studio-32.html...原创 2018-09-29 15:36:06 · 26799 阅读 · 4 评论 -
SQL语句中加中括号[ ]的作用
在操作数据库的时候经常能看到用中括号括住表名或者字段名 例如:CREATE TABLE User ( UserID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, UserName VARCHAR (10) NOT NULL, CreateDate DATETIME NOT NULL, ...原创 2018-09-11 10:42:14 · 15000 阅读 · 0 评论 -
SQLite关键字
参考:https://www.sqlite.org/lang_keywords.html SQL标准指定了大量关键字,这些关键字不能用作表,索引,列,数据库,用户定义函数,排序规则,虚拟表模块或任何其他命名对象的名称。关键字列表很长,很少有人能记住它们。对于大多数SQL代码,最安全的选择是永远不要使用任何英语单词作为用户定义对象的名称。 如果要使用关键字作为名称,则需要引用它。在SQLite中...原创 2018-09-11 10:32:59 · 4128 阅读 · 0 评论 -
RecyclerView添加ContextMenu的两种方案详解
RecyclerView+ContextMenu实现的技术难点主要是在RecyclerView中获取被点击item的position,本文一共给出了两种解决方案。原创 2018-09-18 13:28:58 · 3952 阅读 · 2 评论 -
Android drawable 颜色渐变
Android开发中,渐变色的使用少不了,小到图片背景,大到主题风格,一般为了统一UI直接给切好的背景图,虽然简单粗暴,但不可避免会增加APK的体积,倘若APP的主题风格要变动,那就要替换掉所有相关的图片资源,其实我们也可以用代码来实现颜色渐变:<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="...原创 2018-09-08 18:16:32 · 6020 阅读 · 0 评论 -
Android 动画学习框架
Android 动画框架: 有了框架,不用抹黑前行,可以根据框架进行快速的针对性学习,而且脑海里也容易形成概念,我在学习Android动画的过程总结记录了7篇文章,虽然都是基础学习,但都有示例代码供参考,而且每个示例代码都是可以正常运行的。Android动画(一)ViewAnimation Android动画(二)帧动画AnimationDrawable Android动画(三)...原创 2018-08-26 18:08:34 · 269 阅读 · 0 评论 -
Could not get unknown property 'packageForR' for task...问题解决
发现问题:在更新了Android studio 3.2之后,编译一个旧的项目时出现以下报错:Could not get unknown property 'packageForR' for task ':app:processProduct1DebugResources' of type com.android.build.gradle.internal.res.LinkApplication...原创 2018-09-29 20:48:21 · 5459 阅读 · 0 评论 -
Android Studio 编译提示 aapt.exe finished with non-zero exit value 1的解决方法
今天编译的一个旧项目,该项目是用的Gradle build tools 版本是2.2.0,我当前用的版本是3.2.0,。打开工程正常编译后可以安装APK运行,改动了一些代码后,重新编译提示出现以下错误:aapt.exe finished with non-zero exit value 1首先重新看了下改动的代码,编译器并没有提示错误或者警告,然后怀疑是缓存导致的,那就清除后重新编译下试试看...原创 2018-10-19 09:51:37 · 937 阅读 · 0 评论 -
Android Studio 错误: 编码GBK的不可映射字符
解决方法:在项目下的build.gradle中添加以下代码即可解决tasks.withType(JavaCompile) { options.encoding = "UTF-8"}原创 2018-10-19 16:19:22 · 5372 阅读 · 0 评论 -
C++ String去除头尾空格 实现trim()方法
虽然C++11的标准库中并没有提供trim()方法,但我们可以使用string的find_first_not_of,和find_last_not_of方法实现trim()#include <iostream>#include <string>std::string& trim(std::string &);int main() { st...原创 2019-03-31 17:51:24 · 8910 阅读 · 1 评论 -
Android事件分发机制深度分析(四)
View事件分发机制的源码解析ViewGroup不论是拦截事件或者将事件分发给子View,其最终都是调用了View的dispatchTouchEvent方法,毕竟ViewGroup也是继承自View。所以下面分析View#dispatchTouchEvent源码来了解View事件分发机制。 public boolean dispatchTouchEvent(MotionEvent eve...原创 2019-02-21 00:33:56 · 252 阅读 · 0 评论 -
Android事件分发机制深度分析(三)
ViewGroup事件分发的源码解析虽然ViewGroup是继承自View,但ViewGroup和View的事件分发的处理还是不一样的,所以这里分开来讲。当点击事件到达ViewGroup时,会调用ViewGroup的dispatchTouchEvent方法。而dispatchTouchEvent方法中又会调用onInterceptTouchEvent方法,这时会出现下面两种情况:如果该Vie...原创 2019-02-21 00:26:15 · 262 阅读 · 0 评论 -
Android事件分发机制深度分析(二)
从Activity到根ViewGroup事件分发的源码解析上篇有提到点击事件经过层层传递来到了当前Activity,当事件到达当前Activity时,会调用Activity#dispatchTouchEvent方法: public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == Moti...原创 2019-02-21 00:15:13 · 244 阅读 · 0 评论 -
Android事件分发机制深度分析(一)
概述对Android的事件分发已经研究一段时间了,主要涉及Activity-&amp;gt;ViewGroup-&amp;gt;View 之间的事件传递与拦截,主要源代码在android\view\ViewGroup.java、android\view\View.java 中。好记性不如烂笔头,觉得该记录下来,否则一段时间后又模糊了。所以就有了本篇文章,下面的文章中将对API-26(Android 8.0)中的...原创 2019-02-21 00:09:25 · 431 阅读 · 0 评论 -
自定义ViewGroup不可或缺的ViewDragHelper工具类
ViewDragHelper概述ViewDragHelper实质上是对父ViewGroup中的子view的滑动操作、重新定位视图以及状态跟踪等做了一系列的封装,即只需输入父ViewGroup的TouchEvent,则会通过Callback返回子View的相关操作。省去了程序员需要对ViewGroup中不同子View的各种TouchEvent进行非常复杂的逻辑处理。所以ViewDragHelper...原创 2019-02-21 23:28:09 · 378 阅读 · 0 评论 -
Android studio 3.2.0 使用Android Device Monitor 调试View
概述需要分析一个APP的UI组成,准备用DDMS中的Hierarchy View工具来完成,结果Android Studio 3.2 中竟然没找打DDMS的打开入口,Google后发现下面的说明:1.来自Google官方文档的一段话:https://developer.android.com/studio/profile/monitor.html#usageHowever, most c...原创 2019-02-15 11:15:50 · 3866 阅读 · 0 评论 -
ubuntu16.04安装android-studio
windows下安装Android studio在前面的博客中有记录,这次记录在ubuntu下安装Android studio,虽然操作系统不同,但不同系统的Android studio实际使用上几乎是一样的。JDK java8 安装使用如下三条命令,安装JDKsudo add-apt-repository ppa:webupd8team/java sudo apt-get update ...原创 2018-12-07 13:27:45 · 7186 阅读 · 0 评论 -
Markdown 常用转义字符
由于Markdown中支持HTML标签语言,所以在实际使用中会出现诸如”<”, “>”无法正常显示的问题,这是因为使用上述的特殊字符会被认为是HTML语句而不予显示。所以需要转义,用对应的实体编号或者实体名称来代替。 可替换显示的 ASCII 代码 参考: http://www.w3chtml.com/html/ref/ascii.html示例1: 在Markdown表...原创 2018-08-26 17:41:25 · 12977 阅读 · 0 评论 -
Android 动画(七)AnimatorSet组合动画
概述:ValueAnimator和ObjectAnimator都是针对单个动画的,虽然可以用PropertyValuesHolder实现一个View的多种动画,但是没办法实现多个View同时动画。如果要对多个View做动画,并且单个View上存在多种动画效果,这时候就要用到AnimatorSet类了。AnimatorSet类用来实现复杂的组合动画,但功能上相比于AnimationSet强大多了...原创 2018-08-26 16:56:23 · 18843 阅读 · 3 评论 -
Android 动画(三)Interpolator 插值器
概念:插值器定义动画中特定值如何作为时间的函数进行计算。例如,可以指定动画在整个动画中线性发生,这意味着动画会平均移动整个时间,或者可以指定动画以使用非线性时间,例如在开始或结束时使用加速或减速动画。使用插值器Interpolator改变动画运行的速度:动画系统中的插值器会接收到动画已用时间的百分比。插值器根据这个时间百分比计算动画的实际想要显示的进度,注意该数值进度也是百分比的,并不...原创 2018-07-24 20:07:22 · 356 阅读 · 0 评论 -
Android 在Launcher桌面添加应用快捷图标AppShortcuts/PinnedShortcuts(适用于Android 7.1(API25) 及更高)
如果你的应用的目标是Android 7.1(API级别25)或更高,则可以在应用中定义特定操作的快捷方式。这些快捷方式可以显示在支持的启动器中。快捷方式可让您的用户在应用内快速启动常用或推荐的任务。每个快捷方式引用一个或多个Intent,当用户选择快捷方式时,每个Intent都将在您的应用程序中启动特定的操作。 添加应用快捷方式/快捷键:目前支持两种类型快捷方式,一类是通过长按应用图标弹...原创 2018-06-28 14:15:48 · 2361 阅读 · 4 评论 -
Android 在Launcher桌面添加应用快捷图标(适用于Android 7.0(API24) 及以下)
Launcher为了应用程序能够定制自己的快捷图标,就注册了一个 BroadcastReceiver 专门接收其他应用程序发来的快捷图标定制信息。所以只需要根据该BroadcastReceiver构造出相对应的Intent并装入我们的定制信息,最后调用 sendBroadcast 方法就可以创建一个快捷图标了。一般创建应用快捷图标有如下两种方案: 方案1:在长按桌面弹出的WIDGETS中手动...原创 2018-06-28 13:29:33 · 5829 阅读 · 0 评论 -
解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
报错描述从github上下载了个android的demo,编译时出现Could not find common.jar (android.arch.core:common:1.0.0).的错误。一番百度、谷歌后终于解决。 解决方案在项目的 项目名/build.gradle的repositories中进行如下修改: 修改前: 修改后: 相关代码:reposit...原创 2018-06-09 15:53:45 · 2728 阅读 · 0 评论 -
9patch / NinePatch 详解及使用
一、NinePatch介绍NinePatch 是可伸缩的位图图像,可以用作视图的背景。其实质上就是在原图片(.png)上添加了1px的边框,允许按照我们的需求,把对应的区域设置为黑色线,它在使用的过程中就可以根据我们的实际需求自动调整图形大小以适应视图内容。NinePatch图像保存的后缀名为.9.png 对9patch图的制作规则如下:1、上面黑线或者点表示纵向可拉伸的区域一般一个点即可2、左边...原创 2018-05-23 14:15:33 · 13282 阅读 · 0 评论 -
Android开发之getMeasuredWidth和getWidth区别从源码分析
我相信很多人对getMeasuredWidth和getWidth方法(getMeasuredHeight和getHeight类似这里仅以getMeasuredWidth和getWidth为例)都有过疑惑,并且网上去查阅资料看后也似懂非懂感觉,甚至有网上的讲解是错的,看到这肯定有很多人会说有哪些是错的?你凭什么说别人是错的?凭什么让我们相信你说的是对的?对于这个问题,由于我刚开始查阅资料时看到网...转载 2018-05-23 13:57:32 · 256 阅读 · 0 评论 -
HttpURLConnection无法连接到服务器,报403错误
现象描述:工作中维护的Android APP突然连不上第三方服务器了,服务器返回: Code:403 Message:Forbidden首先了解下403状态: 该状态表示服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是“HEAD”,并且服务器想让客户端知道为什么没有权限的情况下,服务器应该在返回的信息中描述拒绝的理由。说白了就是服务器...原创 2018-06-02 18:17:54 · 6384 阅读 · 0 评论 -
Java 线程池
继续上次读取外部存储器中文件数量的任务,上次采用Callable、Future及FutureTask实现,并没有限制线程的数量,由于创建了大量的生命周期很短暂的线程,造成过度占用系统资源,效率非常低下,在我的Android手机上获取文件数量这一任务大概要执行40s左右。简直不可忍受,这次采用线程池来实现。原创 2018-05-07 21:02:03 · 146 阅读 · 0 评论 -
理解java中的Callable、Future及FutureTask
CallableCallable与Runnable类似,用于封装一个异步运行的任务,但是有返回值。Callable接口是一个参数化的类型,只有一个call(),运行一个将产生结果的任务。原创 2018-05-07 20:09:51 · 196 阅读 · 0 评论 -
Android Studio 导入Module库报Error:Execution failed for task ':app:processDebugManifest'.错误
报错内容Error:Execution failed for task ':app:processDebugManifest'.> Manifest merger failed with multiple errors, see logs原创 2018-05-07 20:08:34 · 208 阅读 · 0 评论 -
Android 动画(四)Property Animation(属性动画)
属性动画与视图动画的不同之处引入时间不同:View Animation 是 API Level 1 就引入的。Property Animation 是 API Level 11 引入的,即 Android 3.0 才开始有 Property Animation 相关的 API。 所在包名不同:View Animation 在包 android.view.animation 中。而 Prop...原创 2018-07-24 21:10:16 · 389 阅读 · 0 评论 -
Android 动画(一)ViewAnimation
Android提供了两种机制,可用于创建简单的动画:补间动画,其中您告诉Android对视图的内容执行一系列简单的转换(位置,大小,旋转等等); 和逐帧动画,逐个加载一系列Drawable资源。这两种动画类型都可以在任何View对象中使用,以提供简单的旋转计时器,活动图标和其他有用的UI元素。补间动画由这个包处理(android.view.animation); 逐帧动画由AnimationDra...原创 2018-07-06 21:36:56 · 904 阅读 · 0 评论 -
解决Notification不显示的问题 (Android 8.0适配)
把Android Studio工程中的targetSdkVersion 设置为26后,会出现Notification不显示的问题,这是由于Notification 在8.0的系统上采用了通知渠道的策略来管理通知,参考谷歌官方提供的通知渠道示例,进行适配即可解决。具体请参见我另外一篇博客Android Notification(Android 8.0)...原创 2018-08-26 14:50:22 · 2338 阅读 · 0 评论 -
Android Notification(Android 8.0)
概述:Android O(也就是SDK26版本) 引入了 通知渠道(Notification Channels)以提供统一的系统来帮助用户管理通知,如果是针对 android O 为目标平台时,必须实现一个或者多个通知渠道,以向用户显示通知。若并不以 Android O 为目标平台,当应用运行在 android O 设备上时,其行为将与运行在 Android 7.0 上时相同。 Androi...原创 2018-08-26 12:15:49 · 3120 阅读 · 0 评论 -
Android 动画(五)ObjectAnimator学习
上一篇我总结了ValueAnimator的用法,但ValueAnimator有个缺点,就是只能对数值对动画计算。我们要想对哪个控件操作,需要监听动画过程,在监听中对控件操作。这样使用起来相比补间动画而言就相对比较麻烦。 为了能让动画直接与对应控件相关联,以使我们从监听动画过程中解放出来,谷歌的开发人员在 ValueAnimator 的基础上,又派生了一个类 ObjectAnimator; Andr...原创 2018-08-08 20:17:12 · 368 阅读 · 0 评论