![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 66
已经毕业的C先生
学得越多,越发现自己很菜,越是觉得时间不够用。
展开
-
Android绘制的那些事 - DrawText的那些事
Android中提供drawText的方法:public void drawText(@NonNull char[] text, int index, int count, float x, float y, @NonNull Paint paint);public void drawText(@NonNull String text, float x, float y, @NonNull Paint paint);public void drawText(@NonNull String text,原创 2020-07-12 17:24:23 · 720 阅读 · 0 评论 -
给控件设置阴影
@Overrideprotected void dispatchDraw(Canvas canvas) { //初始化一个绘制背景的画笔 Paint shadowPaint = new Paint(); shadowPaint.setColor(Color.WHITE); shadowPaint.setStyle(Paint.Style.FILL); shadowPaint.setAntiAlias(true); //计算阴原创 2020-06-01 14:37:22 · 419 阅读 · 0 评论 -
Android 中巧妙使用枚举类型
Android 中巧妙使用枚举类型众所周知,在Android中并不推荐使用枚举类型,来听听官方的说法:Android Developer-Avoid enumerationsAvoid enumerationsA single enum can add about 1.0 to 1.4 KB of size to your app’s classes.dex file. These additions can quickly accumulate for complex systems or sh原创 2020-05-12 20:34:01 · 1461 阅读 · 0 评论 -
Android各种问题解决汇总
如何在任意位置销毁一个Activity,销毁指定的Activity原创 2018-07-27 15:49:02 · 260 阅读 · 0 评论 -
Calendar的基本使用和属性说明
最近在写周期性闹钟的功能,需要对时间进行处理,频繁使用Calendar,Calendar 的使用过程中又有一些陷阱。这里对Calendar进行总结一下。Calendar 可以看作是一个抽象类。 它的实现,采用了设计模式中的工厂方法。表现在:当我们获取Calendar实例时,Calendar会根据传入的参数来返回相应的Calendar对象。获取Calendar实例,有以下两种方式: (1) ...原创 2018-07-17 21:13:56 · 23333 阅读 · 3 评论 -
时间,日期,周的属性获取和转化
最近在写一个关于闹钟的时间设置的功能,类似于Android原生系统中的日历提醒的时间设置。让人头疼的是这时间设置涉及特别多种的可能事件,有点让人 头疼。这篇博文主要用来记录在这个功能实现之前所用的时间日期转化的各种方法。判断某年某月有多少天int year = 2017;int month = 3;Calendar c = Calendar.getInstance();c.set...原创 2018-07-10 20:34:29 · 909 阅读 · 0 评论 -
通过谷歌语音设置闹钟闹钟和定时器Google Voice Action
上一篇博文承诺要写一篇谷歌语音发起闹钟设置的博文,最近这个功能实现得差不多了。趁着今天有点时间,把他总结一下。国内由于一些众所周知的原因,谷歌服务一致不能再国内使用,颇有遗憾。加上国内手机厂商对谷歌原生系统做了大规模定制,谷歌语音被剔除,使用自家优化过,更符合国人使用的语音。前阵子老师要求在谷歌语音中加入APP的设置计时器和闹钟的操作,查了好久也没有查到,本以为是自己的查找方向有问题,后来发现,国...原创 2018-06-06 11:18:18 · 1181 阅读 · 0 评论 -
Android数据库调试,编辑,调试和查看工具的使用。
以前做Android APP开发,每次做数据库功能是最烦的,应为数据库需要在手机上才能查看,如果要在电脑上查看编辑,还需要下载工具,把手机的数据库导入到电脑里,特别浪费时间。后来发现一个特别不错的工具,可以在电脑上实时查看APP的数据库,还可以对它进行编辑,不仅可以查看sqlite,还能查看SharedPreference的数据。特别好用,节约很多开发的时间。 下面介绍一下这个强大的工具。An...原创 2018-05-25 21:07:42 · 1082 阅读 · 0 评论 -
Android APP签名和签名等信息查看
最近在写学校的创新项目,是一个基于定位的签到系统,需要用到百度地图,百度地图SDK的使用需要申请身份,获取key值等,过程中需要提供应用的签名,下面介绍一下签名的使用。1. 为什么要签名?发送者的身份认证 由于开发商可能通过使用相同的 Package Name 来混淆替换已经安装的程序,以此保证签名不同的包不被替换保证信息传输的完整性 签名对于包中的每个文件进行处理,以此确保包中内...原创 2018-05-18 20:29:55 · 11953 阅读 · 2 评论 -
EditText限制输入数字并且范围是1-730 焦点改变监听
发现使用网上博客上的正则表达式写的不太简便,于是自己想了一种自己的方案,直接看代码吧。首先在xml布局文件中对EditText进行属性设置<EditText android:id="@+id/et_end_time_repeat_times" android:text="1" android:inputType="number" a...原创 2018-07-28 12:27:53 · 1513 阅读 · 0 评论 -
Android Error: execution failed for task ':app:transformDexWithInstantRunSlicesApkForDebug'
execution failed for task ‘:app:transformDexWithInstantRunSlicesApkForDebug’可以grade成功,但是不能正常安装在模拟器上,原因缺少slices.apk。这个apk文件正常情况下会在build文件中生成。解决办法:File->Settings->Built,Execution,Deployment->...原创 2018-11-21 18:55:00 · 1007 阅读 · 0 评论 -
Android小坑-OnTouchListener()事件监听长按后抬手MotionEvent.ACTION_MOVE不触发问题
场景:控件使用OnTouchListener()事件监听,正常的流程是,按下瞬间屏幕捕捉到触摸,触发MotionEvent.ACTION_DOWN事件,滑动屏幕会触发MotionEvent.ACTION_MOVE事件,手指离开屏幕会触发MotionEvent.ACTION_UP事件,这是我们所想要的事件触发流程,但是这不是绝对的.举例:假如我们的步骤使:按下-长按-松手,出现MotionEv...原创 2019-01-18 17:00:47 · 6277 阅读 · 0 评论 -
Html富文本解析
textView.setText(Html.fromHtml(imageString, new OrImageGetter(getContext(), textView, 108, 45), null));重写OrImageGetterpublic class OrImageGetter implements Html.ImageGetter { private DkDrawabl...原创 2019-06-24 09:32:27 · 13052 阅读 · 0 评论 -
Lottie动画框架的知识整理
LottieAnimationView lottieView; for (int i = 0; i < mTabButtons.getChildCount(); i++) { final int index = i; lottieView = (LottieAnimationView)mTabButtons.findViewBy...原创 2019-07-02 20:57:24 · 1162 阅读 · 0 评论 -
Android getIdentifier()使用
有些预置的的资源通过ID或者命名来标识,但是对于过多的相似资源,假如需要获取其资源,需要知道其id或者命名去一一得到。显得十分不方便。Android提供一个方法可以通过字符串形式的获取资源。这样,我们获取资源的形式就显得十分灵活。比如需要批量获取某些资源,只需要将资源命名成有规律的名称,通过for循环拼接成指定的资源名称。例子:我们需要通过图片切换的形式去制作一个动画。需要20张图片。这就需要我...原创 2019-08-02 15:18:59 · 1408 阅读 · 0 评论 -
Android LottieAnimation使用---踩坑篇
LottieAnimation众所周知是Airbnb出的一个实现复杂动画的一个框架,可以在Android,IOS等平台使用。使用的步骤也非常简单。但本文不是讲解它的使用。Lottie虽然好用,但也不是万能的,在使用过程中就遇到不少的问题。在已设置Animation的情况下,使用setAnimation()方法再次设置动画并执行playAnimation()时,Lottie控件上的动画会出现短暂...原创 2019-09-04 14:58:47 · 5565 阅读 · 5 评论 -
判断是否有底部虚拟按键的方法
public boolean isNavigationBarShow(Activity context) {Display display = context.getWindowManager().getDefaultDisplay();Point point = new Point();Point point1 = new Point();display.getSize(point);...原创 2019-09-10 11:04:41 · 1526 阅读 · 0 评论 -
Android 出现NoClassDefFoundError问题的解决:使用MultiDex
前阵子做的系统谷歌语音设置闹钟和计时器的功能,然后修复了一下横竖屏和全屏切换的bug,以为就完事了。没想到把代码提交给老师以后,老师说有问题,plus版本的项目打不开。但是明明已经测试过了三台手机,都没有问题才提交的。现在出现这种问题,真的好尴尬!冷静下来仔细想了想,是不是系统谷歌语音添加闹钟和计时器的功能有问题,因为在普通版本上没有出现APP闪退的问题,恰好普通版本的APP没有谷歌语音的...原创 2018-05-11 18:07:17 · 1718 阅读 · 2 评论 -
通过谷歌语音设置闹钟闹钟和定时器Google Voice Action
上一篇博文承诺要写一篇谷歌语音发起闹钟设置的博文,最近这个功能实现得差不多了。趁着今天有点时间,把他总结一下。国内由于一些众所周知的原因,谷歌服务一致不能再国内使用,颇有遗憾。加上国内手机厂商对谷歌原生系统做了大规模定制,谷歌语音被剔除,使用自家优化过,更符合国人使用的语音。前阵子老师要求在谷歌语音中加入APP的设置计时器和闹钟的操作,查了好久也没有查到,本以为是自己的查找方向有问题,后来发现,国...原创 2018-05-04 13:15:04 · 554 阅读 · 0 评论 -
对Android APP的各种样式统一修改方法(这里列举了通知状态栏StatueBar,标题栏ActionBar,ToolBar和按钮Button的样式修改)
有些时候为了UI美化和主题的统一,需要我们对APP的主题样式进行修改,比如修改状态栏,ActionBar 的背景色,设置能对特定控件的样式进行自定义,就不必要我们在每个创建控件中去修改他的样式,大大减少代码量和时间,是一个高效的方法废话不多说,直接上代码首先,在项目中找到并打开AndroidManifest.xml文件 <manifest xmlns:android="http://schema原创 2017-10-13 20:41:01 · 1719 阅读 · 1 评论 -
android sqlite query用法和参数含义
query(table,columns, selection, selectionArgs, groupBy, having, orderBy, limit)table:要查询的数据表columns:需要查询的字段,也就是列名selection : 查询的子条件,相当于select语句中的where部分,在条件子句允许使用占位符“?” selectionArges : 对应着selectio原创 2017-10-13 20:04:22 · 3821 阅读 · 3 评论 -
自定义Selector篇,改变样式,绘制图案和背景
有些时候需要对一些控件的样式进行自定义,但是控件自带的属性修改的效果并不理想,这就需要我们自定义一些样式去修改控件样式,下面介绍自定义样式的方法。以Button为例,我们可以修改Button的形状,颜色,圆角,甚至是渐变色,下面一一介绍。首先,在drawable资源文件夹里新建一个style.xml的资源文件,res/drawable右键/new/Drawable resource file/命名原创 2017-10-20 21:10:02 · 881 阅读 · 0 评论 -
setBackground(),setBackgroundResource(),setBackgroundColor(),setBackgroundDrawable()的区别和用法
setBackground(),setBackgroundResource(),setBackgroundColor()和setBackgroundDrawable()这几个方法都可以对控件的颜色进行设置,setBackground(),setBackgroundResource()和setBackgroundDrawable()可以对背景的样式进行设置,但他们之间又有一定的区别SetBackgr原创 2017-10-21 21:14:22 · 46298 阅读 · 2 评论 -
Settings设置页面的Preference使用方法
PreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Preference和fragment的结合更加便利地写出一个settings页面,下面来介绍PreferenceScreen和fragment结合方法,对于直接创建PreferenceActivity的方法,这里我就不讲了!1. 首先,我们新建一个资源文件,类型是Preference,为了方便管理我们在原创 2017-11-10 12:06:36 · 10270 阅读 · 5 评论 -
Preference,PreferenceCategory,PreferenceList,PreferenceCheckBox等控件的简单讲解
有人会纳闷,为什么不使用普通的控件去写settings页面,非得要preference来写,这是有原因的,Preference可以自动保存上一次操作的值,并且preference会自动将自己的值保存在shared Preference里面,而preference的key作为在shared Preference的主键,用来检索preference保存的值,这就是preference的特点,settin原创 2017-11-16 09:03:10 · 3124 阅读 · 1 评论 -
Android在服务service里使用Toast显示和弹出Dialog
我们一般在Activity里面使用Toast和Dialog,使用比较简单,这里就不用讲了。有时候需要在服务里面使用Toast和Dialog,但是不知道怎么引入上下文Context ,下面介绍另种方式使用Toast和Dialog。1. Toast在Service中使用 ,直接上代码Handler handlerThree=new Handler(Looper.getMainLooper())原创 2018-01-27 13:07:00 · 15010 阅读 · 4 评论 -
定时AlarmManager循环执行后台任务和多个定时循环后台任务写在一起
定时循环执行某些任务,在开发中是很常见的一种方式,Android中有两种定时器可以实现,一种是Alarm,另一种是AlarmManager,Alarm在Android4.4以后,这种方式的定时器不太准确,Android官方为了优化手机电池使用时间,将多个差不多时间差的Alarm定时器放在一起执行,导致部分计时器先执行或者或执行。相比于Alarm,AlarmManager是准确执行的。所以这里我们不原创 2018-01-29 00:33:56 · 5160 阅读 · 8 评论 -
socket和HTTP在Android中的连接请求问题
前阵子的只能小灯的创新实验课上,需要使用Android客户端连接智能小灯实现交互,就用上了socket,一开始对socket并不是很了解,就按照正常的流程进行创建和使用socket,后来发现socket创建时会使APP闪退。后来发现socket不能再主线程中创建,会导致线程堵塞甚至导致APP崩溃,查找网络的资料才发现socket和HTTP一样,在主线程中不能创建,需要创建一个子线程去执行创建soc原创 2018-01-23 23:51:58 · 642 阅读 · 0 评论 -
RecyclerView 出现java.lang.IndexOutOfBoundsException: Index: 13, Size: 12 问题解决
一般java.lang.IndexOutOfBoundsException: Index: 13, Size: 12这种情况是应为数组越界导致。最近在修改RecyclerView的时候,长按最后一个item时会出现java.lang.IndexOutOfBoundsException: Index: 13, Size: 12 的错误。比如数组的最大为13,我取下标为13时就会报错。但是点击事件...原创 2018-03-30 16:22:02 · 8022 阅读 · 1 评论 -
ActionMode显示时ToolBar不隐藏问题
今天接受一个Bug,如下图,就是在点击某个按钮呼出ActionMode的时候,ToolBar并没有消失,而是被顶到ActionMode的下面。起初以为是开发小组里面的其他成员在写issue的时候不小心修改了布局的问题,于是拼命翻看提交记录,想从中找出问题,后来发现并没有对ActionMode做出修改,于是在网上找了ActinMode的详细使用,发现了其中的问题!在网上看到ActionMod...原创 2018-04-08 13:01:59 · 845 阅读 · 0 评论 -
RecyclerView有标题栏的分类列表 自定义列数(不同行设置不同个子项item)
上一个的实验室Issue前几天才完成,两个项目都实现了老师要求,算上中途多次放下去做其他issue,这个issue做了差不多有四个月了吧。还好不是改bug,不然四个月时间足够被批评n次了。趁着现在还有印象,把这个issue里最难搞的问题总结一下,之前做的过程也总结了一些遇到的问题,比如后台多个定时器同事运行的问题,settings界面的注意事项等都总结了,这次总结一下花费最多时间去想的问题,中途还...原创 2018-04-02 17:21:02 · 8239 阅读 · 4 评论 -
This Gradle plugin requires a newer IDE able to request IDE model level 3.
今天用自己的笔记本上的2.3.1版本的AndroidStudio导入自己gitlhub上的一个项目,报一个错:This Gradle plugin requires a IDE able to request IDE model level 3.For Android Studio this means version 3.0+。 开始以为是项目的gradle版本问题,然后就一直在改...原创 2018-04-10 16:29:56 · 411 阅读 · 0 评论 -
无界面Activity或者APP的实现
最近在做一个谷歌语音调用APP设置闹钟的Issue,查看官方文档发现谷歌语音发送Intent给App时需要启动一个Activity,能不能使用Service或者广播去接收Intent呢?答案是不行的,使用普通的Activity有一个问题:每次语音发送Intent给APP的Activity的时候都要启动一次Activity,并且在无法接收到来自Activity的返回信息时,谷歌语会不断发送Inten...原创 2018-04-22 11:11:28 · 15426 阅读 · 10 评论 -
AndroidStudio报错 please select android sdk
从GitHub上download的项目,想看看运行效果,但是出现错误,项目不能运行,错误如下: 后来查看发现是SDK版本错误,这个项目的SDK太低,我的SDK版本高,不兼容导致的。问题找到了,剩下就是如何修改的问题了。 修改项目的SDK版本:File/Project Structure 把Complile Sdk Version 和BuildToolsVersion这两个版本修改一致...原创 2018-04-20 21:02:01 · 225 阅读 · 0 评论