4 SyubanLiu

尚未进行身份认证

我要认证

热爱生活的Android攻城狮

等级
TA的排名 11w+

解决项目合并库冲突

Q: 两个aar包包名相同,版本号不同A:将两个aar包放至统一的一个文件夹内,由统一路径依赖(参考https://juejin.im/entry/5c079f89e51d451dae3bd321)Q:两个不同aar共用一个相同的jar包(可能版本号不同)A:高版本兼容低版本(定制除外),删除低版本的jar,打aar包方式: jar cvf xxx.aar -C xxx/ .Q:遇到Error while generating the main dex list.A:./gradlew ass

2020-08-20 20:46:10

Android消息机制好帮手—Looper、MessageQueue、Handler、Message

基础常识1、 Android 中只有主线程才能更新UI,Android机制的规定,主要是为了保证UI绘制的流畅,防止并发出问题;2、 Android 中主线程不允许阻塞超过5s,否则可能会ANR;3、 Handler机制的核心就是实现线程之间通信;如何涉及一套线程间通信的机制?Q1:如何涉及线程间通信?A1:利用面向对象这个概念,创建一个对象obj,然后在子线程中给obj的一个属性赋值,然后在主线程中,操作obj对象,就可以拿到子线程赋值的结果,完成一次线程通信;Q2:主线程什么时候去操

2020-08-20 19:55:40

图片加载框架ImageLoader实现原理

图片加载框架ImageLoader实现原理声明:本篇文章已授权微信公众号guolin_blog(郭霖)独家发布。前序:在制作App的时候,会经常需要加载一些网络图片,在图片加载框架出来之前,我们都是通过 网络拉取 的方式去服务器端获取到图片的文件流后,再通过BitmapFactory.decodeStream(InputStream in)来加载图片,这种方式加载一两张图片倒不会出现问题,...

2018-11-29 10:18:38

Activity知识点

Activity的知识点主要有:生命周期(正常与异常);启动模式(Launcher Mode);隐式启动(IntentFilter与action、category、data);一、Activity的生命周期:1. 正常的生命周期(七个方法):先附上正常的生命周期流程:正常情况下,一个Activity所经历的生命周期是:onCreate()->onSt...

2018-04-15 00:21:55

最小生成树——Kurskal算法

背景: 最近精神上受到打击,时常怀疑人生,怀疑人生的时候,就时常写写算法冷静,今天给小伙伴们介绍图的最小生成树的算法之——Kurskal算法; … 由于小猿的文采不咋滴,就不长篇大作了,所有故事都在代码里:package ALG;import java.util.ArrayList;import java.util.HashMap;import java.util...

2018-04-12 15:47:41

ListView 与 RecyclerView 简单对比

RecyclerView 与 ListView 的主要区别:布局效果对比常用功能与API对比在Android L引入嵌套滚动机制(NestedScrolling)ListView与RecyclerView的简单使用:ListView: 1. 继承重写BaseAdapter类; 2. 自定义ViewHolder与convertView的优化(判断是否为null);Re...

2018-03-15 12:23:35

利用JavaCV实现将视频以帧方式抽取

使用前: 在用JavaCV实现以帧方式抽取视频的前, 我们需要先从bytedeco/javacv下载第三方的压缩包, 解压后按自己的需求往自己的IDE ( * IDEA / Eclipse * ) 导入解压缩包下JAR文件;接下来就以代码方式来说明如何利用Javacv来将视频以帧的方式抽取出来:import org.bytedeco.javacv.FFmpegFrameGrab...

2018-03-01 12:01:26

初识React Native(二)—实现Android上的原生模块(一)

背景(实现的原因):有时候我们的项目需要:访问Android平台上的API时, 但是我们的React Native可能还没有相应的模块包装; 再或者我们需要复用一些Java代码的时候, 而不是用JavaScript重新实现时; 又或者我们需要实现一些高性能的, 多线程的(因为JavaScript只跑在一个线程上)的代码, 譬如: 操作数据库, 加载图片等等的时候;这时

2018-02-02 19:29:11

初识React Native(一)—集成到原生Android项目

1.创建Android工程2.Android工程创建完成后,在Android studio左下角打开Terminal窗口,输入: npm init 命令(该命令是来生成package.json文件的,改文件即React Native的配置文件,当我们输入该命令后回车,会提示我们输入一些基本的信息,选择填写即可),如图:3.然后执行命令: npm install –save re

2018-01-29 19:32:24

Google InnoCamp 2017 夏令营——万物互联,共享未来

公元2017年8月,在火辣辣的季节里,小猿很幸运地被选中去杭州参加Google InnoCamp 2017夏令营;杭州虽然拥有着“上有天堂,下有苏杭”的美称,但八月的杭州真的热得跟大火炉似的,不过,由于小猿作为Google的粉丝,这么热的季节也阻止不了小猿去参加Google承办的夏令营…这个故事的开始要回溯到公元2017年6月,当时小猿正在改着bug,突然间,小猿的Gmail收到了一份Google的

2017-12-12 22:30:23

ClockView——简单的Android时钟控件

ClockView —— 简单的Android时钟控件GitHub地址:https://github.com/LanceShu/ClockView使用前:先在项目中的build.gradle中添加maven:allprojects { repositories { maven { url 'https://jitpack.io' } }}然后在app的build.gr

2017-11-14 22:33:40

HTTP小常识

HTTP简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,适用于从万维网服务器传输超文本到本地浏览器的传送协议;HTTP是一个基于TCP/IP协议来传递数据(HTML文件、图片、查询结果等);HTTP工作原理:HTTP协议工作于C/S架构(客户端-服务器)为上,浏览器作为HTTP客户端通过URL向HTTP服务器即WEB服务器发送所有请求;

2017-11-12 20:56:03

JVM垃圾收集器与内存分配策略

概述问:垃圾收集器(GC)需要完成的三件事情:答:1. 哪些内存需要回收? 2. 什么时候回收? 3. 如何回收?问:为什么我们还要去了解GC和内存分配呢?答:当需要排查各种内存溢出、内存泄露等问题时,当垃圾收集器成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节;对象已死吗在堆里面存放的几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是确定这些对象中

2017-09-03 00:25:53

Kotlin实战——LacWeather

简介该APP是基于Kotlin语言以及借鉴《Android第一行代码》中的酷欧天气进行编写的,这也算是小猿学习Kotlin的时候,写的第一款Kotlin小demo。 主要功能我的城市:用户收藏的城市(正在实现中…)以及用户当前所在的城市的天气信息;查询城市:用户可以查询全国各地的城市的天气信息; 技术实现LitePal:利用LitePal数据库来存储城市的省市县信息,实现简单的插入与查询;

2017-09-01 15:19:32

PopupWindow的简单使用(结合RecyclerView)

Android弹窗:在Android中弹出式菜单(以下称弹窗)是使用十分广泛一种菜单呈现的方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式AlertDialog和PopupWindow;两者的区别:AlertDialog弹窗在位置显示上是固定的,而PopupWindow则相对比较随意,能够在主屏幕上的任意位置显示; 今天就简单介绍一下,如何利用PopupWindow实现Recyc

2017-07-28 16:04:08

AndroidUI 卡片式折叠交互效果——CardStackView

最近小猿在改进之前写过的学校教务系统APP的UI界面的时候,发现了一个有趣的Android UI——卡片式折叠交互CardStackView,该View是在GitHub上找到的,但是该View的主人没有告诉我如何使用,小猿研究了半天,在此,将其简单的使用步骤阐述一下:CardViewStack的GitHub地址:https://github.com/loopeer/CardStackView 先

2017-07-17 11:08:13

Android自定义View之圆形图片--RoundImageView

最近,和几个朋友一起准备做一个关于交易平台的一个项目;在准备之前,我们的UI设计师给我们设计了一个登录界面,这个登录界面最难之处就是要用户的头像需要圆形的,但Android的组件中并没有现成的View,所以我就去看看了其他大牛们的blog,都是通过自定义View来实现的,所以我就开始边看边学习了一下。在自定义View之前,需要使用onMeasure()方法测量图片的宽度widthMeasureSpe

2017-03-25 20:07:04

Servlet的使用---Tomcat与Eclipse的配置

今天小shu给大家介绍一下有关Servlet的使用,做任何事之前都是需要做一些准备的,首先就给大家讲一下如何搭建一个JavaWeb服务器,我们这次要用到的工具是Tomcat与Eclipse(Java EE版);一.使用前必备物品: 1.JDK的安装与环境变量的配置; (我的JDK安装在了C:\Program Files\Java\jdk1.8.0_92上) JDK的下载可以到oracl

2017-03-04 20:23:18

Android之ViewPager+RadioGroup

今天,跟大家介绍一下如何在Android中实现类似微信那样的底部的导航栏;实现这样的效果主要用到两个控件ViewPager与RadioGroup; 不多说,让我们一起看看代码是怎样实现的吧: 首先,我们要创建一个简单的线性布局,在里面放TextView+ViewPager+RadioGroup 然后在MainActivity中实例化各个控件,该MainActivity继承的是ActionB

2017-03-01 21:15:44

Android Studio使用之小插件

一、前言: 今天,在实验室敲代码的时候,忘了带数据线,然后在Android Studio面前敲完代码,一脸懵逼地坐在电脑面前思考咋把apk安装在手机上,原本想通过QQ来安装的,但想想有点麻烦,就在网上找到了个Android WiFi ADB的方法。二、使用前: 1.在https://plugins.jetbrains.com/idea/plugin/7983-android-wifi-adb上下

2017-02-28 23:15:11

查看更多

勋章 我的勋章
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。