自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 GSYVideoPlayer推荐来了

注意:7.0以上版本使用了anndroidx,support版本请看GSYVideoPlayer:6.0.2<引用看>你可以选择下面三种的其中一种,在module下的build.gradle添加。//完整版引入implementation 'com.shuyu:GSYVideoPlayer:8.0.0'B、添加java和你想要的so支持:implementation 'com.shuyu:gsyVideoPlayer-java:8.0.0'//是否需要ExoPlayer模式im

2020-12-08 17:48:16 3034

原创 Android 大神性能优化

资源类性能分为:磁盘、CPU和内存,以及与环境密切相关的网络和因为移动网络而显得很重要的电池(耗电)。1、磁盘1.1 发现定位工具:Strict Mode 和 Systrace。对于Strict Mode 的原理,主要是在文件操作(BlockGuardOs.java)、数据库操作(SQLiteConnection.java)和 SharePreferences操作(SharePreferencesImpl.java)的接口中插入检查的代码。1.2 具体优化点使用缓存,避免重复多次读写某个文件。(比

2020-12-05 08:46:16 313

原创 android 详解ArrayMap

今天简单研究一下 ArrayMap;ArrayMapArrayMap 是一种相较于 HashMap 具有更高内存效率的 key-value 对存储结构;ArrayMap 内部包括两个数组结构,分别是专门用来存储 HashCode 的 mHashes 和用来存储 key-value 的 Object 数组类型的 mArray;ArrayMap 是非线程安全的;源码分析构造函数public ArrayMap() {this(0, false);}public ArrayMap(int capa

2020-12-04 11:30:56 1854

原创 AndroidX好处-理解AndroidX

刚刚看到自己加的一个Android群里有人问AndroidX,还是Google自己的,竟然没听说过,慌的一匹。赶紧去看了下官方文档和一些博客,对AndroidX有了如下理解Android X 是 Jetpack 的一个项目,解决了原来support 包在第三方依赖时的问题。第三方依赖问题具体案例如下:假如现在工程A,使用了依赖库b,在b中依赖了support包 appcompat-v7并且该版本为26; 如果我想不做任何修改的在A中使用appcompat-v7,我只使用版本26。此时A又依赖一个库c

2020-12-04 11:26:44 985 4

原创 Android截屏实现

Android截屏的几种实现最近我们的APP要求需要截屏功能,网上看了看大致有一下几种实现的方式,由于我们的机器是特定的设备,(类似于广告机,已经ROOT),所以就采用最简单的方式,只需在代码中执行shell命令即可实现,下面就给大家介绍一下各种截屏的方式。方式一public static Bitmap capture(Activity activity) {activity.getWindow().getDecorView().setDrawingCacheEnabled(true);Bitma

2020-11-28 09:17:58 1162

原创 抛异常

今天要讲的内容:throw 和 throws异常类型仿写异常及其好处一. throw 和 throws异常通常的处理方式有 throw/throws 以及 try-catch 两种。今天我们主要讲解throw/throws这一类的处理。throw:抛出异常,一般是一个具体的异常。放置在方法体内,当代码执行此行并抛出一个具体的异常以后,此异常下面的逻辑代码均不会执行。throws:抛出异常的声明,一般放在方法头,表示此方法的执行可能会引起某个异常,或某几个异常,throws 后面可以声明多个异常

2020-11-28 09:13:15 167

原创 成长之路

自适应布局是通过在视图之间添加约束条件来确定视图在屏幕中的位置。因为我们是在二维平面中确定视图的位置,因此我们至少要在视图的水平和垂直两个方向添加约束,这样才能确定视图的位置。首先我们应该新建一个项目然后我们把Android studio帮我们默认创建的activity_main.xml删除掉,然后新建一个同名的xml,将xml的根视图设置为androidx.constraintlayout.widget.ConstraintLayout。然后双击activity_main.xml选择右上角的Desi

2020-11-19 16:40:25 84

原创 主线程阻塞

一、前期基础知识储备当一个应用程序启动之后,android系统会为这个应用程序创建一个主线程(Main Thread),它负责渲染视图,分发事件到响应监听器并执行,对界面进行轮询的监听。因此,一般也叫做“UI线程”(UI Thread)。android系统不会给应用程序的多个元素组件建立多个线程来执行。一个视图(Activity)中的多个view组件运行在同一个UI线程当中。因此,多个view组件的监听器的执行可能会相互影响。如果在UI线程中做一些比较耗时的操作,比如访问网络或者数据库,都可能阻塞UI

2020-11-19 16:35:23 1059

原创 面试宝典

1.静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?静态内部类:使用static修饰的内部类内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类匿名内部类:使用new生成的内部类因为内部类的产生依赖于外部类,持有的引用是类名.this2.Java中try catch finally的执行顺序先执行try中代码,如果发生异常执行catch中代码,最后一定会执行finally中代码3.equals与==的区别:==是判断两个变量或实

2020-11-19 16:27:33 141

原创 android 简要命名规范

版本日期:2020.11.13前面的话:命名规范要望文知义,简单明了。命名规范定制太多,就会让人心烦,反而没人遵守了。包的命名规范建议采用如下规则:【公司域名/组织域名】.【平台+项目名称】.【模块名】比如:cn.liuniukeji.ceshi。然后在这个目录下根据业务逻辑进行分层。xxx.app 程序级别比如Application和其他一些公用配置xxx.app.comkey 公用键xxx.bean 实体xxx.broadcast 广播xxx.service 服务xxx.green

2020-11-13 13:34:05 438

空空如也

空空如也

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

TA关注的人

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