
Android
文章平均质量分 94
ai-exception
Github: https://github.com/DmrfCoder;
Gmail: xuefanggang97@gmail.com;
QQ:2296452542
展开
-
Android中的Service是如何启动的
1:前言Service是Android中的四大组件之一,日常开发中我们经常会使用startService之类的方法来启动Service,那这个方法调用的底层原理是什么呢?Android系统是如何启动起来Service的呢?本文我们从源码出发,介绍一下Android中的Service是如何启动Service的,本文的结构如下:2:源码分析2.1:ContextImpl.startService&startForegroundService:应用层调用的入口我们调用startService/s原创 2021-07-25 13:06:28 · 633 阅读 · 2 评论 -
Plist转Json的方法
摘要plist,即property list,是苹果手机软件开发中经常用到的存储文件格式,其实质就是XML文件,但是它遵循一定的格式。比如包含一些指定的元素,如plist,array,string,key等。苹果提供了解析该类文件的机制,可惜在安卓开发工具中却没有提供。经常遇到的情况是,在开发苹果和安卓手机软件的时候,要统一资源文件,本文采取的解决方案是将plist转为json进而实现在and...原创 2018-07-07 11:42:57 · 3465 阅读 · 0 评论 -
Android控件设置透明度的三种方法
需求有时会需要改变布局颜色透明度,比如设置控件(如View,Button等)的透明度,有3种方法。实现方法java代码实现text = (TextView) findViewById(R.id.text);text.getBackground().setAlpha(12);setAlpha()的括号中可以填0–255之间的数字。数字越大,越不透明。注意点:在5...转载 2018-07-27 12:39:59 · 34856 阅读 · 8 评论 -
使用gradle打包指定类为jar包的方法
在Android studio中通过gralde脚本打包指定类的为jar包的示例脚本:打包某个包下的所有文件task clearJar(type: Delete) { delete 'libs/sdk.jar' } task makeJar(type:org.gradle.api.tasks.bundling.Jar) { //指定生成的jar名 baseN...原创 2018-07-27 13:04:22 · 4967 阅读 · 1 评论 -
Gson自定义序列化与反序列化
前言在使用Gson的时候我们经常需要根据自己的需求定义序列化和反序列化的规则,本文主要讲解如何优雅地进行Gson的序列化和反序列化。序列化方法实现JsonSerializer接口注册自定义的序列化实现demo自定义UserInformationBeanSerializer并实现JsonSerializer接口public class User...原创 2018-07-28 12:49:42 · 4532 阅读 · 0 评论 -
Android之——模拟实现检测心率变化的应用实例
Android之——模拟实现检测心率变化的应用实例当今,市面上有了一些可以通过Android应用来检测病人心率,血压,体温,等等,一系列方便人们日常生活的Android手机应用。那么,这些实用的手机应用程序是怎么做出来的呢?那么,今天,我就给大家奉上一个很有意思的应用,那就是Android上模拟实现检测心率的变化。我利用Android模拟实现了通过手...转载 2018-07-28 13:44:54 · 3615 阅读 · 1 评论 -
Android 设置EditText 默认弹出数字软键盘并限制其输入内容
前言设置 EditText 首次输入弹出数字键盘,然后可以随便切换输入模式,另外以输入身份证号 为例,因为身份证号只可能是数字 + 字母 X,所以这里不仅做了首次弹出数字键盘,还实现了对于其他键盘模式输入做了限制,只能输入字母 X 。代码xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xm...原创 2018-07-28 14:50:29 · 4732 阅读 · 0 评论 -
Android数据加密之AES加密
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的 DES,已经被多方分析且广为全世界所使用。简单说就是 DES 的增强版,比 DES 的加密强度更高。AES 与 DES 一样,一共有四种加密模式:电子密码本模式(ECB)、加密分组链接模式(CBC)...原创 2018-09-03 11:27:53 · 363 阅读 · 0 评论 -
Android Studio解决org.gradle.api.resources.ResourceException: Could not get resource
报错信息如下:Caused by: org.gradle.api.resources.ResourceException: Could not get resource ‘https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.0/gradle-3.1.0.pom 7解决方案: ...原创 2018-06-18 00:49:52 · 19753 阅读 · 21 评论 -
使用python搭建服务器并实现Android端与之通信
前言好久没有更技术文了,再不写怕是博客要废掉了,今天更一篇关于搭建服务端并与Android端通信的文章,为了节省代码量,服务端使用Python Flask,Android端使用Okhttp,还是老样子,文章不讲原理只给具体实现,想要了解原理可至官网详细研究。服务端环境:服务端使用Python3.5+PyCharm新建Flask项目看图: 然后create,初始化完成之后项...原创 2018-06-13 16:47:56 · 21176 阅读 · 26 评论 -
ButterKnife(黄油刀)基本使用与源码解析
前言ButterKnife又称黄油刀,是一款快速绑定Android视图中字段和方法的注解框架,也是Android开发中比较常用的一款快速注解框架,通过ButterKnife的合理运用,我们可以避免重复地书写findViewById,在各种场合下快速地绑定view中的多种事件,大大提高开发的效率,它具有如下几点主要的功能:通过@BindView注解消除findViewById的使用将多个v...原创 2019-07-22 19:41:00 · 4778 阅读 · 2 评论 -
一种组件化框架的探究之旅
概述本文主要就组件化中服务实现类的实例化方法做简要探究,希望可以探索出一种简洁易用的组件化框架,本文到的主要技术有:编译时注解javapoet的使用反射的使用问题的引入在软件开发中,当一款软件的规模和功能不断增多、丰富,原先的“一勺烩”架构往往显得捉襟见肘,为了便于团队协作、便于维护、便于升级,我们往往需要将一个软件划分为若干个模块(即我们所说的模块化),而这若干个模块又是依赖于很...原创 2019-07-29 18:20:59 · 1657 阅读 · 0 评论 -
Fresco入门使用及简单特性介绍
概述随着摄影技术的不断发展和普及,我们的应用程序大多数都具有显示图片这样的需求,在Android移动设备上,由于平台计算能力的差异、设备硬件的差异,我们很难将图片在不同的设备上完美地显示,经常出现的情况是一份展示图片的代码在高性能手机上运行很流畅,但是部署到硬件稍微差劲一点的设备上就会出现卡顿、占用内存比例过大、甚至应用崩溃的现象。所以我们最好能寻求一种框架,可以帮我们处理不同计算能力平台上的...原创 2019-06-30 22:51:17 · 2289 阅读 · 1 评论 -
入门Retrofit,看这一篇就够了
test原创 2019-06-29 20:17:36 · 2261 阅读 · 1 评论 -
Android SQLite入门使用
概述Android 提供了几种方法用来保存数据,使得这些数据即使在程序结束以后依然不会丢失。这些方法有:文本文件:可以保存在应用程序自己的目录下,安装的每个app都会在/data/data/目录下创建个文件夹,名字和应用程序中AndroidManifest.xml文件中的package一样。SDcard保存:Preferences保存:这也是一种经常使用的数据存储方法,因为它们对于用...原创 2019-05-23 09:11:02 · 277 阅读 · 0 评论 -
Android动态权限申请
摘要本文介绍了如何用最短的代码解决Android 6.0以上的动态权限申请问题说明:本文不讲原理不讲过程只讲如何用最简单的方法使用,如想了解具体原理可深入工具类的源码进行学习,或者去找其他资源。添加相关依赖在你项目的app gradle的dependencies下添加下列语句: compile 'com.github.dfqin:grantor:2.1.0'添加原创 2018-01-25 14:47:35 · 326 阅读 · 0 评论 -
android中AudioRecord使用详解
摘要本文介绍了android中AudioRecord的一些基本使用,主要参考官方文档,本文不讲过多理论知识,主要介绍在实际开发中的使用方法。类概述 AudioRecord类在Java应用程序中管理音频资源,用来记录从平台音频输入设备产生的数据。 通过AudioRecord对象来完成”pulling”(读取)数据。 应用通过以下几个方法负责立即从AudioRecord对象读取: ...原创 2018-02-26 23:45:29 · 29409 阅读 · 1 评论 -
AudioRecord参数解释
public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)参数解释:audioSource 音频源指的是从哪里采集音频。这里我们当然是从麦克风采集音频,所以此参数的值为MICsampleRateIn...原创 2018-03-11 11:31:21 · 2032 阅读 · 0 评论 -
Android NDK常见错误解决方案
clang++: error: linker command failed with exit code 1 (use -v to see invocation)这种错误最常见的出现形式是sync的时候没错,但是build的时候就报这个错误,解决方案: 在app的defaultConfig中的ndk节点中添加:stl "gnustl_static"即可Tried exte...原创 2018-04-03 20:50:11 · 2436 阅读 · 0 评论 -
Ncnn使用详解(2)——Android端
摘要本片文章基于你已经完成了这篇文章的学习,主要介绍如何将写好的c代码应用到Android项目中。环境说明系统:Ubuntu16.04 软件:Android Studio前期准备之ndk安装在正式开始前我们需要先下载安装ndk,这里介绍一种简单高效的方式,打开Android Studio,然后依次点击File->Settings->Appearance&B...原创 2018-04-13 17:07:39 · 24774 阅读 · 23 评论 -
Android将Uri转化为文件路径的方法
直接贴代码: @RequiresApi(api = Build.VERSION_CODES.KITKAT) public static String getpath(Context context, Uri uri){ if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) { if...原创 2018-09-03 11:30:05 · 3730 阅读 · 2 评论 -
Android如何设置顶部状态栏颜色(主题)
在Android中我们经常需要设置屏幕顶部状态栏的主题和应用页面保持同一风格,本文介绍几种常用的设置方案:状态栏将显示为纯净的颜色,没有渐变效果/** * 状态栏相关工具类 * */ public class StatusBarUtils { //设置Activity对应的顶部状态栏的颜色 public static void setWindowS...原创 2018-09-03 16:46:05 · 28765 阅读 · 3 评论 -
Android okhttp cookie持久化方法
cookie的作用当app需要保持用户登陆状态等,这个时候我们通常就要进行对cookie的管理来实现。如果你使用的是okhttp网络请求,那么就可以直接对cookie进行持久化管理。使用okhttp3进行cookie的持久化处理主要原理是使用okhttp3中新增的Cookiejar这个接口,通过这个接口我们可以直接进行cookie的持久化管理,代码如下:首先实现cookieJ...原创 2018-09-03 17:03:30 · 1666 阅读 · 2 评论 -
Android面试必备——OkHttp源码理解
首先理一下okHttp使用的一般流程:1:OkHttpClient.Builder okHttpClientBuilder=new OkHttpClient.Builder();//创建Builder,可以在这里设置OkHttpClient的相关参数,比如:new OkHttpClient.Builder().readTimeout(20, TimeUnit.SECONDS)2:OkHttpC...原创 2019-04-11 16:59:01 · 2458 阅读 · 0 评论 -
Android SQLite使用入门
概述Android 提供了几种方法用来保存数据,使得这些数据即使在程序结束以后依然不会丢失。这些方法有:文本文件:可以保存在应用程序自己的目录下,安装的每个app都会在/data/data/目录下创建个文件夹,名字和应用程序中AndroidManifest.xml文件中的package一样。SDcard保存:Preferences保存:这也是一种经常使用的数据存储方法,因为它们对于用...转载 2019-04-11 17:05:11 · 245 阅读 · 0 评论 -
Android常见面试题&字节跳动、阿里、腾讯2019实习生Android岗部分面试题
原文地址:https://github.com/DmrfCoder/interview/blob/master/Android/Android常见面试题.md文章目录什么是ANR,如何避免主线程中的Looper.loop()一直无限循环为什么不会造成ANR?ListView原理与优化ContentProvider实现原理如何使用ContentProvider进行批量操作?为什么要使用通过`Con...原创 2019-04-11 17:09:20 · 8842 阅读 · 3 评论 -
Android面试必备知识点总结
本文原文(MarkDown)链接:https://github.com/DmrfCoder/interview/blob/master/Android/Android.md文章目录Android的系统架构是怎么样的?Android手机启动过程BootloaderKernelinitZygote启动系统服务引导完成Activity启动过程如何退出APPAndroid四大组件ActivityActi...原创 2019-04-11 17:23:57 · 7926 阅读 · 1 评论 -
Android开发常见问题解决方案
The APK file app-debug.apk does not exist on disk.问题详情Android studio run app的时候报错The APK file app-debug.apk does not exist on disk.解决方案1:Edit Configurations如图,点击Edit Configurations,查看你app配置中的是否有如...原创 2019-04-22 23:35:54 · 822 阅读 · 2 评论 -
OkHttp源码解析
概述OkHttp是一个适用于Android和Java应用程序的HTTP + HTTP/2框架。使用示例 //创建OkHttpClient.Builder OkHttpClient.Builder builder = new OkHttpClient.Builder(); //创建OkHttpClient OkHttpClient okHttpClien...原创 2019-05-05 21:05:47 · 425 阅读 · 1 评论 -
史上最详细最易懂的EventBus源码解析
本文原文地址在github,建议大家在github查看相关配图及源文件。本文全文较长,建议大家收藏,有时间的时候静下心来细细研读,同时由于笔者能力有限,文中可能存在些许问题,欢迎大家在github或csdn留言交流。EventBus概述EventBus是一个基于订阅者-发布者模式框架,该模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听一个对象,通过这种方式对订阅者和主题发布者进行充分解...原创 2019-04-25 17:32:44 · 740 阅读 · 0 评论 -
Android fragment生命周期解析
Fragment生命周期图Fragment与Activity生命周期对比图生命周期分析当一个fragment被创建的时候,它会经历以下状态:onAttach()onCreate()onCreateView()onActivityCreated()当这个fragment对用户可见的时候,它会经历以下状态:onStart()onResume()当这个fragmen...原创 2018-09-21 15:27:36 · 530 阅读 · 0 评论 -
android解决Gradle sync failed: java.lang.AssertionError: Invalid libraryOrderEntry错误
File > Invalidate Caches/Restart原创 2018-06-19 23:00:46 · 4592 阅读 · 0 评论 -
Android面试必备——Fragment
Android面试中Fragment也是会经常被问到的知识点,本文介绍一下Fragment。概述Fragment是Activity中用户界面的一个行为或者是一部分。主要是支持在大屏幕上动态和更为灵活的去组合或是交换UI组件,通过将Activity的布局分割成若干个Fragment,可以在运行时编辑Activity的呈现,并且那些变化会被保存在由Activity管理的后台栈里面。Fragmen...原创 2019-04-03 16:26:51 · 753 阅读 · 0 评论 -
Android面试必备——AsyncTask源码解析
AsyncTask是Android中常用的异步任务解决方案,在面试中面试官经常会问到有关AsyncTask相关的点,很多人只知道如何去用AsyncTask,没有深入过源码理解其原理,这在面试的时候往往对自己不利,本文从源码角度解读AsyncTask的原理及使用,相信读完本文你就可以很好地应对Android面试中有关AsyncTask的问题。首先,AsyncTask是一个抽象类,我们使用的时候需要...原创 2019-04-03 15:57:14 · 970 阅读 · 0 评论 -
Activity 与 Fragment 通信方式总结
概述通常,Fragment 与 Activity 通信存在三种情形:Activity 操作内嵌的 FragmentFragment 操作宿主 ActivityFragment 操作同属 Activity中的其他 Fragment在Android中我们可以通过以下几种方式优雅地实现Activity和fragment之间的通信:Handler广播EventBus...原创 2018-09-21 15:52:32 · 10712 阅读 · 1 评论 -
Android解决Can't create handler inside thread that has not called Looper.prepare()
在Android子线程中使用Toast时会报错:代码:Toast.makeText(this, "", Toast.LENGTH_LONG) .show();报错:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()解决...原创 2018-09-03 17:10:45 · 1198 阅读 · 0 评论 -
Android添加listview item左滑事件的方法(仿QQ实现左滑弹出删除menu)
在使用 listview时经常会遇到左滑弹出删除或者对item进行其他操作的需求,就是下图中红色圈圈的部分: 本文本着避免重造轮子的原则使用这个开源库,具体用法;添加依赖dependencies { compile 'com.baoyz.swipemenulistview:library:1.3.0'}代码使用SwipeMenuCreator creat...原创 2018-09-03 17:28:32 · 1387 阅读 · 3 评论 -
Android如何跳转至目标Activity后按返回键不返回前一个Activity
有时候我们希望从一个activity离开后,按返回键不要再回去(比如点击退出登陆后跳转至登陆界面,这是点击返回键不希望返回到之前的退出登陆界面),那么我们需要把这个activity从栈区中去除。考虑在activity A中调用 activity B,不允许从activity B中返回activity A,只要将原来的跳转代码替换为如下: Intent intent=new Intent(...原创 2018-09-05 12:41:31 · 8127 阅读 · 2 评论 -
Android使用系统指纹对应用进行解锁加密的方法
之前有给应用加上指纹解锁的需求,在这里记录一下相关方法:说明Android的指纹支持是在6.0以后才引入的,所以要求api必须大于23.流程判断当前手机是否支持指纹识别if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Log.i("info", "手机支持指纹识别"); ...原创 2018-09-05 12:56:10 · 1280 阅读 · 0 评论 -
Android将数据导出为excel文件的方法
需求描述将应用内的数据导出为excel表格。实现添加依赖包在app的build.gradle里面添加依赖包:implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'编写excel工具类package cn.xiaojii.cashgift.uti...原创 2018-09-05 13:06:01 · 25854 阅读 · 61 评论