自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (6)
  • 收藏
  • 关注

原创 整理

Android中Bitmap内存优化https://www.jianshu.com/p/3f6f6e4f1c88

2020-12-23 19:39:11 112

原创 WindowManager基本原理

所有需要显示到屏幕上的内容,都是通过WindowManager来操作的。从Dialog的构造函数开始看context.getSystemService()根据键值对取出WindowManager,该对象的创建位于ContextImpl初始化时,最终返回的是WindowManager的实现类WindowManagerImpl。通过setWindowManager()将windowManager与window绑定Dialog(@NonNull Context context, @StyleRes int

2020-09-22 12:03:35 295

原创 ActivityThread和Application启动流程

ActivityThread基于Android-29ActivityThread就是UI线程即主线程,其中有main方法是整个APP的入口,在这里初始化了MainLoopermainHandler:ApplicationThread中的方法执行以及Activity的创建都依赖于主线程Handlerattach()方法 public static void main(String[] args) { ... Looper.prepareMainLooper();

2020-09-11 11:53:26 474

原创 Android注解以及自定义注解实例与解析

Android注解以及自定义注解实例与解析1. 什么是注解注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行标记,例如我们常见的@Override和@Deprecated,一般常用的注解可以分为三类:一类是Java自带的标准注解,包括@Override(标明重写某个方法)、@Deprecated(标明某个类或方法过时)和@SuppressWarnings(标明要忽略的警告),使用这些注解后编译器就会进行检查。一类为元注解,元注解

2020-09-11 09:37:08 633 1

原创 Volley源码解析(二)

上一篇博客介绍了Volley的请求流程,本篇会分别介绍请求过程,缓存过程,回调过程请求过程从NetworkDispatcher的run方法开始分析 while (true) { Request<?> request; try { // Take a request from th...

2020-02-28 19:36:16 86

原创 Volley源码解析(一)

Volley基本用法本文章目的不在于介绍Volley的用法,仅对基本的用法进行介绍,意在引出源码解析的入口Volley的基本用法通常为3步创建RequestQueue创建Request将Request加入RequestQueue以Josn请求为例RequestQueue mQueue = Volley.newRequestQueue(context);JsonObjectRe...

2020-02-27 19:14:41 169 1

原创 不同系统版本中新增方法、新增类的兼容

当应用需要适配新的系统版本,使用系统SDK中新增的类时,需要同时适配旧的版本。类的新增方法:通过反射的形式。Class cls = Class.forName("com.android.internal.telephony.BlockChecker");Method method = cls.getDeclaredMethod(methodName, paramType1, paramTy...

2019-11-08 12:04:02 151

原创 AsyncTask工作原理

AsyncTask封装了Thread,Handler,用于方便的执行后台任务以及在主线程中访问UI。类的声明如下:public abstract class AsyncTask<Params, Progress, Result> 首先看execute()方法,execute()直接调用了executeOnExecutor()方法:可以看到,首先调用了onPreExecute(...

2019-08-29 17:20:01 523 1

原创 Looper,MessageQueue,Handler,ThreadLocal--记录

今天看了一下Android消息机制,查资料加思考,仅作为记录ThreadLocalThreadLocal:为每个线程保存一份变量的副本。原理:先看set(),首先获取当前线程t,然后通过getMap(t)获取ThreadLocalMap实例,如果存在,则调用map的set(),否则创建map并传值。 public void set(T value) { Thread t ...

2019-08-29 11:31:54 198

原创 Android Service+AsyncTask实现断点续传下载并在前台通知栏显示下载进度

创建接口用于对下载状态的监听和回调。public interface DownloadListener { void onProgress(int progress); void onSuccess(); void onFailed(); void onPause(); void onCanceld();}创建下载异步任务。提供开始,...

2019-08-26 12:12:57 320

原创 Android 调用相机拍照并显示,打开相册并显示

调用相机拍照并显示设置拍照保存路径并将之转换为Uri启动相机,并传递该Uri作为参数在保存路径读取照片并显示private void takePhoto() { //创建File对象,用于储存拍照后的图片 File outputImage = new File(getExternalCacheDir(), "output_image.jpg"); ...

2019-08-23 15:32:39 2886

原创 Android Notification的使用

点击按钮实现弹窗通知@Override public void onClick(View view) { switch (view.getId()) { case R.id.send_notice: //创建点击后跳转页面intent Intent intent = new Inten...

2019-08-22 20:23:25 240 1

原创 Content Provider使用方法以及Android运行时权限申请

本文通过一个获取所有联系人实例来展示如何获取其他应用数据以及运行时权限申请过程。AndroidManifest.xml加入如下权限<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>声明一个listView存放取到的联系人信息;检测是否有对应权限,...

2019-08-22 19:49:49 1786

原创 RecycleView最佳实践-横向,竖向滑动,瀑布流

代码首先在gradle中添加依赖dependencies { ... implementation 'androidx.recyclerview:recyclerview:1.0.0'}定义一个适配器需要继承自RecyclerView.Adapter<FruitAdapter.ViewHolder>,传入泛型类型。public class Fru...

2019-08-22 19:34:14 458

原创 ListView最佳实践

思路利用getView()中contentView参数是用于对加载好的布局的缓存,将一个存放listview的item的ui控件的holder利用view.setTag()存放在该contentView的tag中,当contentView不为null时,直接取出holder更改ui控件的显示内容即可。代码ListView的Adapterpublic class FruitAdapter e...

2019-08-22 19:24:05 207

原创 Android使用Brocast Receiver实现强制下线功能

思路在list中存放所有Activity在收到强制下线的广播时,弹窗提示并关闭所有Activity。代码引用文本创建Activity记录类,提供add,remove,finish方法。public class ActivityCollector { public static List<Activity> activityList = new ArrayLi...

2019-08-22 19:09:27 318

原创 ubuntu使用docker,nginx,jenkins,gitlab实现持续集成

结构:docker创建两个容器,一个nginx,一个jenkins,将gitbook安装在jenkis容器中1.docker以及nginx容器的安装见此链接其中nginx容器的创建命令修改为下面命令,区别为挂载了两个文件夹,一个用来存nginx的常规文件,一个用来存放html文件,在 docker run -p 8080:80 --name nginx_1 -v /home...

2018-08-17 11:27:23 861

原创 docker的安装以及nginx容器的配置

docker的简单介绍:Images : 镜像,docker可从仓库中下载各种镜像,如nginx等 Container:容器:镜像与容器就如java中类和对象的关系,一个镜像可以创建多个容器,可以对容器进行配置.docker的安装:系统:ubuntu16.04命令:$ apt-get install docker.io$ docker version 查看版本修改doc...

2018-08-09 17:26:25 1922

原创 solr快速入门教程

由于项目需要,花了几天时间学习了一下solr单机版本,实现简单的搜索首先介绍几个基本概念字段field:可以将一个文档看做一个对象,字段相当于对象中的属性,我们检索就是对字段的值进行检索,分为字段,复制字段,动态字段.动态字段dynamicField:对于名称不确定的字段,我们可以只指定特定的前缀或者后缀,如对book_1,book_2这类字段,可以定义为book_*复制字段copyField:对...

2018-07-09 20:51:07 3234

原创 Ubuntu 18.04 安装 solr7.4详细过程

准备:solr 7.4,在官网上下载linux版本,默认jdk,tomcat已安装成功1.解压solr7.4到/opt下2.将solr-7.4.0/server/solr-webapp下的webapp文件夹复制到tomcat的webapps文件夹下,重命名为solr3.将如下jar包复制到tomcat/webapps/solr/web-inf/lib下solr-7.4.0/server/lib/e...

2018-07-05 19:24:04 881

原创 班级管理,课程管理(ztree,echart的使用)

班级管理:与其他模块管理相比,增了上传解析文件的部分,即可以通过表格文件对班级成员完成添加操作前端代码:下面是layui中上传文件所需要的配置,以及上传成功后的刷新操作&lt;button type="button" class="layui-btn" id="addStudentByExcel"&gt;&lt;i class="layui-icon"&gt;&lt;/

2018-06-07 21:26:21 781

ppjoke.zip

Android运行时注解以及编译期注解实例(带注释),博客原文:https://blog.csdn.net/jiculong7893/article/details/108527221

2020-09-11

属性动画 平移,旋转,缩放,透明度变化,使用ValueAnimator和ObjectAnimator实现 基于贝塞尔曲线实现的仿qq点赞效果的自定义ViewGr

属性动画 平移,旋转,缩放,透明度变化,使用ValueAnimator和ObjectAnimator实现 基于贝塞尔曲线实现的仿qq点赞效果的自定义ViewGroup

2020-05-11

opengl开发所需包

opengl开发所需包,opengl开发所需包,opengl开发所需包

2018-06-16

山东大学中间件课程ppt和往年试题考点整理

中间件课程ppt整理以及往年考点整理..................................

2018-06-16

山东大学计算机图形学实验课程资源

山东大学计算机图形学实验资源以及上课ppt和往年试题整理,考点整理

2018-06-16

Android视频音频播放器

android本地音频,视频播放器,浏览本地视频视频并形成播放列表,实现进度条,播放模式(随机播放,顺序播放,单曲循环),快进,快退,仿网易云的播放动画(图片旋转)

2018-06-09

空空如也

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

TA关注的人

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