自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 从0开始认识android(十五):点击链接启动APP及Android App Links详解

  首先,来看看android中的两类链接:   1、深链接Deep linking     深链接即我们通常说的scheme跳转,需要我们在清单文件中对activity添加intent-fillter,并定义scheme(包括但不限于HTTP协议)。如果用户手机内安装了多款能响应链接启动的应用,那么系统会弹出一个选择器,让用户自主选择用哪个应用打开(可能不是你的应用)。   2、安卓软件链...

2018-06-06 12:57:01 9030 3

原创 从0开始认识android(五):创建系统闹钟、倒计时和日历事件的Intent

1、创建闹钟和倒计时 必须的权限: < uses-permission android:name=”com.android.alarm.permission.SET_ALARM” /> 闹钟:如果我们借助AlarmManager开发一个用药提醒的APP,一旦APP进程被用户干掉后,就没法提醒了,这时我们就只能借助系统闹钟来曲线救国了。private void create...

2018-05-24 10:30:09 4624 3

原创 自定义一个简单的3D柱状图

说是3D,其实暂时还跟3D绘图相关的API扯不上边,用的都是2D的API实现的。见图:详细代码public class BarChat3DView extends View { private Context mContext; private PaintFlagsDrawFilter mDrawFilter; //画板宽度 private int mCanv...

2020-02-21 23:29:51 844

原创 TV(电视)应用开发指南

前阵子将一个手机APP改为TV应用,由于首次开发TV,故把开发过程中的一些问题记录下来,以备不时之需。

2019-09-25 00:50:21 9267 6

原创 androidx导致的一次车祸现场

看下车祸前的现场:android studio版本3.2,gradle-wrapper用的4.6,gradle插件用的3.2.0.项目targetSdkVersion设置为28,相应控件用的还是com.android.support包下的,版本为28.0.0.某年某月某日某时,项目突然编译报错:Android resource linking failed Output: error: res...

2019-06-27 10:19:41 527

原创 一个手机通讯录、短信、通话记录读取依赖库

  一个通讯录、短信、通话记录读取工具库,jar包下载地址,使用方法:  读取通讯录权限:<uses-permission android:name="android.permission.READ_CONTACTS" />//设备通讯录ContactHelper contactHelper = new ContactHelper (activity, mBaseHandl...

2019-06-16 23:06:41 538

原创 我知道的:这才是你想要的纯文档扫描功能

  一个纯文档扫描功能,目前可扫描到系统中的所有"doc", “ppt”, “xls”, “pdf”, “docx”, “pptx”, “xlsx”, “txt”, “rar”, "zip"文档,可自由过滤类型,只扫描出文档数据,界面由你定制。使用步骤如下:  1.添加jar包  将下载的jar包放到你项目libs目录下并作为依赖库使用,jar包下载地址  2.声明你要扫描的文档类型 p...

2019-06-16 11:14:14 816

原创 一个肯定可以满足你需求的视频压缩方案

  主要采用七牛短视频压缩算法,jar包下载链接:(由于上传的jar包尚未通过审核,急需的朋友可以留下邮箱我私发)  jar包使用:  1.将jar包放到项目libs目录下并作为依赖包使用:  2.将对应so文件放到项目jniLibs目录下:  调用压缩public class VideoCompressUtil { public static final int VIDE...

2019-06-15 23:07:38 1023 1

原创 目前两类比较主流的android屏幕适配

  

2019-06-14 11:24:27 1258 2

原创 greenDao3经常遇到的坑

android数据库框架greenDao相较于其他数据库框架有多快这里就不再赘述了,但事情总是两面的,个人感觉greendao有多快,也就有多坑,话不多说,直接看货:1、依赖到你的项目里在项目的根build.gradle添加如下依赖classpath ‘org.greenrobot:greendao-gradle-plugin:3.2.2’:在你的module的build.grad...

2019-06-11 17:09:39 2890 4

原创 简单易懂的混淆总结

  一、为什么要混淆-混淆的作用  压缩(Shrinking):默认开启,用以减小应用体积,移除未被使用的类和成员,并且会在优化动作执行之后再次执行(因为优化后可能会再次暴露一些未被使用的类和成员)。-dontshrink 关闭压缩  优化(Optimization):默认开启,在字节码级别执行优化,让应用运行的更快。-dontoptimize 关闭优化-optimizationpa...

2019-06-11 15:50:10 1401

原创 SDK之aar封装总结

前言:  当你开始开发一个自己的sdk前,应该先明确是打包成jar包还是aar包。jar包和aar包主要的区别是:aar包可以把项目里的资源文件下的资源打包进sdk中,而jar则不打包资源文件。所以,如果你希望你的sdk提供一些界面供使用者直接使用,那么建议打包为aar。开发aar过程中常遇到的坑:  关于aar的坑,可以看下面这篇文章,个人感觉作者总结得已经比较到位了,只是对于文章中第七点...

2019-06-06 12:16:16 2220

原创 从0开始认识android(二十四):Toast升级品Snackbar

snackbar添加于22.2.0的版本,属于com.android.support:design包下的控件,之所以说它是Toast的升级品,个人觉得原因有两点:1.提示作用比Toast明显,2.比Toast多了一个点击事件及消失时的回调。下面是具体的使用步骤:一、添加design依赖implementation 'com.android.support:design:27.1.0'二、基...

2019-04-11 18:31:55 272

原创 自定义组合式控件和自定义属性总结

下图为上图中选中的第一个条目UI的布局代码: 看第一张图,我们发现, 这个界面中有五个大致相同的UI,而从上段代码中我们发现,单单其中一个UI的布局代码还是有点多的,试想,如果五个这样的UI的布局代码都写在一个xml文件中,那么这个xml文件看起来就很冗长,而且代码的复用性很不好。遇到这种情况,我们就要想办法把这些重复的代码抽取出来,让需要的UI复用即可,这就涉及到自定义组合式控件(这里的组

2019-04-03 17:51:39 545

原创 从0开始认识android(二十二):最全notification详解

  这里涉及到的是v4支持包中的通知API,因为这些API能将一些比较新的特性兼容到4.0版本的设备,所以,我们第一步要做的是为项目添加v4包依赖:implementation 'com.android.support:support-compat:26.0.0'  当然,如果你的项目中已经依赖了其他以com.android.support开头的库的话,就可以不用再添加上面的依赖了。一...

2018-09-28 15:20:17 1100

原创 从0开始认识android(二十一):8.0的Tooltips

  Tooltips可以实现类似pc端网页鼠标悬停时出现描述信息的功能,而到安卓中,如果给一个控件使用了Tooltips,那么当用户长按这个控件时,我们预设的描述信息就会悬浮出现在控件附件某个位置。例如下图,当我们长按图中的悬浮按钮时,我们希望能出现“Send an email”对这个按钮作用进行描述:     实现方式有两种:   1、为悬浮按钮添加android:tooltipText...

2018-09-08 23:11:59 2678

原创 从0开始认识android(二十):兼容最新的emoji

    android8.0新增了EmojiCompat,其可以使android4.4以上的设备很好的兼容最新的emoji,国内开发者可以通过如下方式来实现该功能:

2018-09-08 20:14:38 695

原创 从0开始认识android(十九):8.0字体大小自适应的Autosizing TextViews

  8.0开始,在不同尺寸的屏幕上,TextView可以设置autoSizeTextType属性使文字大小填满整个TextView控件。例如下面的一个TextView:&amp;amp;lt;TextView android:id=&amp;quot;@+id/myview&amp;quot; android:layout_width=&amp;quot;match_parent&amp;quot; android:

2018-09-06 12:08:56 917

原创 从0开始认识android(十八):style与theme

  style和theme都是用于定义控件的显示样式,只不过style只能作用于单独的一个控件;theme虽然也是style的一种,但theme作用的是整个APP或某个界面或一组控件:如果你的theme用在清单文件的application节点下,那么这个theme就作用于整个APP;如果用在某个清单文件的activity节点下,它就只作用于这个界面。  一、创建并引用style   你的st...

2018-09-05 06:28:34 195

原创 从0开始认识android(十七):性能优化之布局优化

布局文件的复杂程度涉及到程序界面的渲染速度,要优化APP性能,先从最基本、最直接的布局文件开始。

2018-08-27 15:42:48 202

原创 从0开始认识android(十六):网络编程之WI-FI和移动网络管理

  HttpsURLConnection是安卓自带的网络传输客户端,支持TLS,配置链接超时,IPv6和连接池功能。正所谓万丈高楼平地起,了解一下最基本的网络框架有助于我们更好的理解一些优秀的第三方框架如retrofit和okHttp等。这里我们使用HttpsURLConnection手撸一个下载功能来学习其基本用法。   首先,申明网络使用权限&amp;amp;lt;uses-permission and...

2018-06-14 11:02:39 585

原创 从0开始开始认识android(十四):Fragment(片段)

fragment生命周期   fragment的生命周期受其宿主activity的影响,即Activity 暂停时,其中的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁,需要注意的是,一个fragment加入了activity返回栈和没有加入返回栈被removed或replaced时执行的生命周期方法是不一样的:   加入返回栈的:被removed或replac...

2018-06-04 14:26:38 210

原创 从0开始认识android(十三):进程和APP的生命周期

  我们知道,APP的生命周期是无法自我做主的, 系统会在内存不不够用的时候把后台的进程干掉,那后台是根据什么判断哪些进程应该被干掉,哪些应该保留呢?   其实,系统会根据每个APP中四大组件的运行状态来将APP所在的进程分为不同的种类,以下就是系统区分的进程类型(被杀可能性由低到高):   1.、前台进程   即用户正在使用的app所在的进程,只要一个app的某些组件满足以下某个状态,那么...

2018-06-01 07:16:13 1787

原创 从0开始认识android(十二):任务(task)、返回栈(back stack)及Activity启动模式

什么是任务和回退栈   一项任务就是用户在桌面点击图标启动APP开始,在使用该APP的某个功能过程中所涉及到的一组activity的集合;这组activity按“先进去的后出来”的原则保存在一个容器中,这个容器就叫回退栈,栈的结构可以看成一只桶或一个杯子,都只有一头出口。   手机桌面是开启一项任务的地方,当用户点击一个APP图标开始就开始了一项任务,一个APP对应一项任务,如果一个APP之前...

2018-05-28 16:35:53 407

原创 从0开始认识android(十一):Activity生命周期

1、生命周期 1、生命周期图 2、onCreate   onCreate方法在整个界面的一次启动中只执行一次,所以,我们可以把那些在这个界面中只需要执行一次代码放在这里实现,比如说请求网络数据等。   生命周期进入onCreate方法主要有两种情况:   第一种就是这个界面第一次被启动,这种情况没什么可说的。   第二种就是,当我们的界面生命周期处于看得见摸不着的onPause状...

2018-05-26 23:01:23 393

原创 从0开始认识android(十):选择照片或视频的Intent

1、启动文件选择器static final int REQUEST_IMAGE_GET = 1; public void selectImageVideo() { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); //只显示照片供选择,可以多选 // in...

2018-05-25 10:03:40 2022 2

原创 从0开始认识android(九):打开地图、浏览器的Intent

1、打开地图public void showMap() { //根据地名打开地图应用显示,字符串要记得编码!! String encodedName = Uri.encode("贵州省人民医院"); Uri locationUri = Uri.parse("geo:0,0?q="+encodedName); //根据经纬度打开...

2018-05-24 15:46:11 1769

原创 从0开始认识android(八):发送邮件、短信和拨打电话的Intent

1、发送邮件public void composeEmail(String[] mainAddresses,String[] copyAddresses, String[] secretAddresses, String subject,String text, Uri attachment) { Intent inte...

2018-05-24 14:18:17 1344

原创 从0开始认识android(七):获取手机联系人的Intent

1、创建闹钟和倒计时 必须的权限: &amp;amp;amp;amp;amp;amp;lt; uses-permission android:name=”com.android.alarm.permission.SET_ALARM” /&amp;amp;amp;amp;amp;amp;gt; 闹钟:如果我们借助AlarmManager开发一个用药提醒的APP,一旦APP进程被用户干掉后,就没法提醒了,这时我们就只能借助系统闹钟来曲线救国了。private void createAl

2018-05-24 11:29:16 863

原创 从0开始认识android(六):启动系统相机拍照、摄像的Intent

1、启动系统相机 1.1、只是简单的获取所拍照片的缩略图启动相机static final int REQUEST_IMAGE_CAPTURE = 1;private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_...

2018-05-24 10:33:10 4743

原创 从0开始认识android(四):Intent及intent-filtter详解

该系列的文章只是本人的一些个人理解、随笔、总结,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!

2018-05-22 13:51:54 637

原创 从0开始认识android(三):危险权限

该系列的文章只是本人的一些个人理解、随笔、总结,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!       从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予:   如果设备运行的是 Android 5.1 或更低版本,或者应用的目标 SDK 为 22 或更低:如果您在清单中列出了危险权限,则用户必...

2018-05-15 16:14:17 273

原创 从0开始认识android(二):四大组件及Intent初识

该系列的文章只是本人的一些个人理解随笔,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!    本篇主要是对android的四大组件Activity,Service,BroadcastReceiver和ContentPrivider及这四大组件间的启动Intent方式做一个初步认识,详细的在后面.以下内容摘抄自安卓文档  Activity   Activit...

2018-05-12 13:54:13 491

原创 从0开始认识android(一):系统与进程的关系

该系列的文章只是本人的一些个人理解,也深怕误人子弟,如果理解有错的地方还希望看到的朋友指正,不胜感激!!!      这篇主要理解安卓系统与我们的APP间的关系,当我们的APP被安装进手机中的那一刻,会发生什么呢?我们来看安卓文档中的这一段话: 安装到设备后,每个 Android 应用都运行在自己的安全沙箱内:   Android 操作系统是一种多用户 Linux 系统,其中的每...

2018-05-11 17:38:16 383

原创 git管理项目时的.ignore文件模板

版本控制需要忽略的文件:# Built application files*.apk*.ap_# Files for the ART/Dalvik VM*.dex# Java class files*.class# Generated filesbin/gen/out/# Gradle files.gradle/build/# Local configuration file (s

2017-06-10 19:34:42 1421

原创 自定义一个炫酷、可触控的仪表盘

这个控件主要是可以通过滑动射线区域和圆弧区域来修改中间的值大小,可以指定偏低/正常/偏高三个范围的值大小以及对应范围的颜色.

2017-05-20 12:15:38 1327 2

原创 property animation(属性动画)、view animation(补间动画)、drawable animation(帧动画)比较

一.属性动画 属性动画相对于位补间动画说,更稳定健壮一些,属性动画不仅能够实现view的动画,更能实现非view的动画,可以说能实现anything做动画,例如颜色等。属性动画可以定义以下几个属性: 1.Duration 该属性是定义一次动画执行下来所花的时间,默认是300ms。 2.Repeat count and behavior 该属性是定义一个动画重复的次数以及怎样去实现重复,即是

2016-06-25 18:28:03 440

原创 让TextView实现走马灯效果并避免因EditText和 AlerterDialog抢走了焦点而停止

首先要牢记一点:即Android布局中默认只能有一个view获得焦点,不可能存在多个view同时获得焦点的情况. 一. 如果只需要让唯一 一个TextView实现走马灯的话,可以直接在布局文件中为该 TextView添加以下五个个属性即可:android:singleLine=”true”单行显示 android:ellipsize=”marquee”走马灯样式 android:focusa

2016-06-23 23:37:33 396

原创 代码:如何获得当前APP版本号

将以下代码封装在PackageUtils类中即可/** * 获得版本号信息 * * @param context * @return */ public static String getVersionName(Context context) { PackageManager pm = context.getPackageM

2016-06-23 00:37:44 384

android-contact-reader.jar

一个通讯录、短信、通话记录读取工具库,详情使用请移步https://blog.csdn.net/jack_bear_csdn/article/details/92156616

2019-06-16

android-document_scanner.jar

Android开发纯文档扫描器,可扫描到的格式:"doc", "ppt", "xls", "pdf", "docx", "pptx", "xlsx", "txt", "rar", "zip",可自由过滤文档类型,界面自定义,详细使用请移步:https://blog.csdn.net/jack_bear_csdn/article/details/92156417

2019-06-16

PLDroidShortVideo-1.7.0.zip

七牛短视频压缩算法,亲测免费,压缩效率不错,压缩质量也可以。

2019-06-15

空空如也

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

TA关注的人

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