自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AndroidX 迁移

为什么要迁移Support 库版本多管理复杂,谷歌推出了 AndroidX,目前最新的 Android Support Library 是28.0.0,后面已经不会再维护了,并且新的 Jetpack库、Google Play服务、Firebase等以及一些常用的第三方库都已经迁移到 AndroidX上面了,如果项目不迁移会导致一些谷歌新功能和许多第三方库无法升级。迁移准备如果不在 Git 等一些源代码管理平台上,先在本地备份一份项目;如果在源代码管理平台上最好新建一个分支,在单独的分支上先迁移,这样迁

2020-07-25 15:48:36 243

原创 生成图片

生成图片代码如下: private static Bitmap generalBitmap(ViewGroup viewGroup, int width, int height) { // width and height must >0 if (width <= 0 || height <= 0) { return null; } viewGroup.measure(width, heigh

2020-06-28 19:39:42 341

原创 跑马灯效果

最近做项目需要展示一个展示广告的跑马灯效果,网上找到一个继承 HorizontalScrollView 实现的,但是不能循环滚动;还有用 RecyclerView 实现的,比较好,但是会可以手动滑动,也不符合需求,下面自己改一下。实现效果:自动滚动循环滚动不可手动干预(如果想干预也可以)任何View都可以(就是个普通的RecyclerView,内容想是啥自己写就可以了)实现思路:...

2020-01-13 14:28:32 4732

原创 Android Q 适配

Android Q (10.0)(API 29) 适配因为项目在华为部分手机有预装,应华为要求,适配 Android Q(Android 10) 版本,因为华为那边要求,新版本系统出来不久就会适配,项目是一步步适配上来的,Android M、Android N、Android O、Android P ,所以本次适配是从 Android P (9.0) 升到 Android Q,所以适配难度不是很...

2019-09-16 20:12:03 8935 2

原创 Android P 适配

Android P (9.0)(API 28) 适配最近将我们项目的targetSdkVersion升到28了,由于是从Android O (26)升到Android P(28)遇到的问题不算多,下面是一些需要适配的问题,后面遇到其他问题再补充:一、适配,首先更改 build.gradle,我这边的更改如下:android { compileSdkVersion 28 bui...

2019-08-08 19:06:04 587

原创 Android N 适配

之前项目升级时都做了适配文档,之前发了 Android O 适配 ,现在将 Android P 的文档也分享一下一、Uri适配现在遇到的是调用系统照相机拍照摄像,照片裁剪,APK安装等需要适配。有些Uri是不需要适配的,用了FileProvider反而有问题。比如照片裁剪中保存裁剪照片的Uri详细见下文,还有就是拍照后发送广播将照片更新到图库的Uri也不能用FileProvider,如下。F...

2019-08-08 19:04:01 220

原创 线性排序

下面是三种线性排序算法,都不是比较算法,不涉及元素间的比较操作 项目地址桶排序 /** * 获取最大值和最小值 * * @param data * @return [最大值][最小值] */ private int[] getMaxAndMinData(int[] data) { int length = data...

2019-08-02 18:46:05 1746

原创 高级排序

下面三个高级排序,评论时间复杂度能O(nlogn) 项目地址归并排序public void sort (int[] data) { mergeSort(data, 0, data.length - 1);}private void mergeSort (int[] data, int low, int high) { if(low >= high) return;...

2019-08-02 18:42:00 287

原创 普通排序

最好时间复杂度最坏时间复杂度平均时间复杂度空间复杂度稳定性冒泡排序O(n)O(n^2)O(n^2)O(1)稳定选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定插入排序O(n)O(n^2)O(n^2)O(1)稳定希尔排序O(n)O(n^2)O(n^ 3/2)O(1)不稳定归并排序O(nlogn)...

2019-08-01 19:09:59 330

原创 CardView

CardView 记录&lt;android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardBackgrou...

2018-12-27 17:27:16 166

原创 Java 传递和拷贝

对值传递和引用传递、深拷贝浅拷贝的记录我觉得对于值传递引用传递和深拷贝浅拷贝可以看作是一类问题,下面大体记录一下。值传递:形参和实参的内容不同,传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值引用传递:形参和实参的内容相同,传递过程就是将实参的地址传到函数中,形参和实参始终指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执...

2018-12-16 21:07:05 363

原创 ijkplayer 编译精简

上篇文章说了一下我编译ijkplayer的过程,没看过的可以大体看一下,ijkplayer编译,下面会把编译出来的Demo(ijkplayer-example)中的有用的拷出来。1、导入基础库新建一个空的Android项目,然后将ijkplayer-java和ijkplayer-exo分别导入到项目File-New-Import Module导入到项目里ijkplayer-java和i...

2018-10-28 18:50:26 1342 1

原创 数组拷贝

这几天学习数据结构看ArrayList等源码看到好多地方用到 Arrays.copyOf() 和 System.arraycopy() ,现在学习总结一下。1、看下 System.arraycopy() 方法public static native void arraycopy(Object src, int srcPos, ...

2018-10-27 23:05:04 457

原创 Android 8.0 适配

Android O (8.0)(API 26) 适配最近将我们项目的targetSdkVersion升到26了,下面是一些需要适配的问题,后面遇到其他问题再补充:一、参考我另一篇文章 Android 8.0 通知适配二、安装APK1、在Android 8.0及以上系统调用安装Apk的代码会发现屏幕闪一下就结束了,并没有跳转到安装Apk的界面。因为Android 8.0中,Google 移除...

2018-10-25 16:28:13 461

原创 Android 8.0 通知适配

下面说一下Android O (8.0)(API 26)通知的相关适配一、分析Android O 之前打开一个App的设置的通知是这样的发送一条通知通过下面代码/** 简单的发送通知*/private void showNotification() { NotificationManager notificationManager = (NotificationManage...

2018-10-24 13:15:45 3010

原创 ijkplayer编译

记录一下ijkplayer 编译过程ijkplayer官网提供的使用功能有限,https也不支持,一般项目中使用都需要自己编译,网上也有好多编译好的,用的不太放心,这里自己编译一下,下面为我的编译过程环境:Mac 10.13.1ijkplayer github地址一、环境安装看ijkplayer github的Before Build1、install homebrew, ...

2018-10-21 14:50:07 2016

原创 ijkplayer 使用

下面简单介绍一下ijkplayer的使用ijkplayer是b站基于FFmpeg开源的播放器,ijkplayer提供了个IjkMediaPlayer,功能和用法跟MediaPlayer类似,但是强大很多官网Github一、ijkplayer使用1、新建一个Android项目,并在app的gradle下的dependencies中添加下面代码,其中ijkplayer-java是核心代码必...

2018-10-20 22:14:31 16464

原创 自定义注解-实现findViewById和onClick

编译时注解下面通过编译时注解实现类似ButterKnife的功能一、项目结构AnnotationModule:Java Module,存放自定义注解 CompilerModule:Java Module,注解处理器,生成Java类。依赖如下implementation 'com.google.auto.service:auto-service:1.0-rc2'...

2018-08-24 17:40:23 955

原创 编译时注解二

编译时注解上篇文章说了一下编译时注解的用法和使用步骤,并写了一个Demo编译时生成本地文件,这篇文章会通过编译时注解生成一个Java类看一下编译时注解在安卓中的具体使用.1、新建Android工程名为 AnnotationPractice,完成后,新建一个Module选择Java Library 名为 testlib.2、在Java工程中定义注解类GenerateCode....

2018-08-17 10:08:35 626

原创 编译时注解一

编译时注解编译时注解使用 RetentionPolicy.CLASS 修饰,注解会保留在java和class文件里,在执行的时候,会被虚拟机丢弃,不会加载到虚拟机中。由于使用 RetentionPolicy.CLASS 注解代码的生成发生在编译阶段,在运行时只需要正常调用生成的代码就可以,所以效率跟正常编写代码一样。一、常用方法和类AbstractProcessor 中基础方...

2018-08-17 09:37:03 790

原创 运行时注解

运行时注解运行时注解使用 RetentionPolicy.RUNTIME 修饰,注解会被编译器记录在java和class文件中并被虚拟机保留到运行时,可以通过反射处理。由于使用 RetentionPolicy.RUNTIME 修饰代码发生在运行阶段使用反射,所以性能上有所损耗。一、获取注解/** 获取特定注解*/public &amp;lt;T extends Annotat...

2018-08-17 09:29:11 440

原创 自定义注解

自定义注解,代替枚举类型的运用一、常量比如做一个下载功能,有 等待、下载中、下载完成、下载失败、空 几种状态,我们可以定义一组常量来表示public class DownloadStatusConst { public static final int NONE = 0; public static final int WAIT = 1; publi...

2018-08-17 09:26:06 198

原创 注解

我会根据几篇文章讲一下注解,重点说一下自定义注解,以便以后自己编写和阅读别人相关代码。一、注解的分类1、标准注解java中预置的几个注解Override:用来检查重写的。子类复写父类方法时可以使用,如果父类没有此方法子类则会报错 Deprecated:用来标记过时的元素。不鼓励使用或废弃的类、方法、属性等,使用处会被显示中划线 SuppressWarnings:用来...

2018-08-17 09:23:10 174

原创 自定义 TextView 两端对齐

TextView 两端对齐Android上实现类似Word上那样两端对齐的样式,网上找了两个试了下挺不错的,AlignTextView和android-justifiedtextview。不过有点小问题, 有下面问题:justifiedtextview显示一个url链接时会显示不完整都不支持emoji表情现在在 这个妹子文章 的基础上修改一下,这个和justifiedtextview一样,写的

2017-09-11 14:55:49 856 1

原创 Android Activity基类封装

编写一个Activity基类,对Activity进行封装,方便使用,参考知乎上一个帖子,可以点击这里查看1、新建抽象类ParentActivity继承AppCompatActivity,并实现OnClickListener接口public abstract class ParentActivity extends AppCompatActivity implements View.OnClickLi

2016-08-15 23:28:13 5312

原创 高德定位集成

1、进入高德开放平台;2、注册用户登录,并成为开发者;3、创建应用,填写应用名称和应用类型;4、点击最右侧小三角展开什么都没有,好了现在点击右侧“添加新Key”,弹出对话框中输入 “Key名称”、”Package(应用包名)”、选择”服务平台”,然后就是”调试版和发布版的SHA1”了,可以先随意输入(一会过来改)提交后即可看到高德为我们生成的Key了5、进入高德定位相关下载下载SDK,还有Demo和

2016-07-29 01:16:22 1512

原创 android无法影藏标题栏问题

android如何隐藏标题栏请查看android影藏标题栏和全屏这篇文章。之前我们项目中是在style.xml中添加样式隐藏标题栏的,如下: <style name="ThemeActivity"> <item name="android:windowNoTitle">true</item> ... </style>然后在AndroidManifest.xml中的a

2016-07-27 01:05:17 1383

原创 Android Shape 笔记

Android Shape 笔记官网地址:http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape “rectangle”: 矩形,默认值 “oval”: 椭圆 “line”: 水平线 “ring”: 环形 下面几个属性仅用于android:shape=”ring”,没用过corners

2016-03-01 16:08:11 463

原创 android界面切换滑动动画

这里主要介绍两种情况,第一种是一个Activity跳转到另一个Activity时的滑动效果。第二种是一个Activity中的两个View,其中一个隐藏一个显示时加上滑动效果。先写两个动画效果,这里是在布局中写的,也可以在代码中实现,在res/anim中写这俩个out_to_left.xml 从左边出<?xml version="1.0" encoding="utf-8"?><set xmlns

2015-06-18 14:04:55 908

原创 冒泡和快速排序

1.冒泡排序void bubbling_sort(int[] myInt){ int temp; for (int i = 0; i < myInt.length; i++) { for (int j = 0; j < myInt.length - 1 - i; j++) { if(myInt[j] > myIn

2015-05-06 19:34:55 328

原创 android影藏标题栏和全屏

去掉标题栏方法一:在Activity中 在setContentView()前加上this.requestWindowFeature(Window.FEATURE_NO_TITLE);方法二:在AndroidManifest.xml中 在AndroidManifest中注册activity时加上android:theme="@android:style/Theme.NoT...

2014-10-08 15:06:05 828 1

原创 Mysql 安装

电脑重装了系统以后mysql数据库服务也没有了,就重新从网上载了一个注意要下载Mysql Server,我开始下载了一个解压后是一个文件夹,里面就没有.exe可执行文件,我就挺郁闷,以为是下错了呢,后来就又下载了一个是.exe的,可是安装的时候提示:This application requires .NET Framework 4.0 ,难道我还要装个.NET环境吗?于是我...

2014-09-21 18:57:41 497

android gridview

更具android的GridView控件写的一个两列图片和文字共同显示 在adapter中的getview 中设置显示样式 有兴趣的看下

2014-11-22

CompleteTextView

在文本框中输入一个或多个字符时,列表提示,提示内容可以为字符串数组或List,其内容可以从数据库中获取也可以自定义

2013-12-16

ViewPager实现开机引导界面

通过ViewPager实现开机引导界面,具体通过手指滑动图片进行切换

2013-12-13

空空如也

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

TA关注的人

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