自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (12)
  • 收藏
  • 关注

原创 Flutter(一) package的使用、开发与发布

pub.dev是Dart官方的仓库地址,当然我们也可以将自已写的package发布到该仓库中供别人使用。这会直接到pub.dev查找下载cupertino_icons库,指定版本:1.0.2。

2022-08-16 15:03:00 1336 1

原创 使用plugin DSL引用自定义gradle plugin

升级AndroidStudio到Chipmunk版本后,可以发现创建项目时默认使用gradle-7.3.3版本。plugins{}Delete){}gradle3.5.2'}}通过dependencies配置插件依赖的方式改成了plugins。当然变化不止这一点,将一些通用配置移到了settings.gradlegoogle()}}google()}}include'app'include'libplugin'这里以localrepository的方式讲解。...

2022-07-27 18:54:50 1185

原创 kotlin标准库<一> - Collections

该文章同步更新到稀土掘金链接前言Kotlin标准库提供了一套全面的工具来管理集合。Java、Python其实也提供了类似的集合,用于管理维护相同类型的多个元素。我们看下官方提供的集合接口类图:List和Set继承于Collection,而Collection实现了Iterable接口,因此List和Set都支持迭代器遍历尽管Map没有实现Iterable接口,但是也可以使用迭代器遍历。这是为什么呢?接下来通过基本使用从几个维度分析Collections为我们提供了哪些集合操作。集合的构造方

2022-01-27 09:05:19 1072

原创 kotlin - data class使用详解

该文章同步更新到稀土掘金链接前言我们经常创建一些只保存数据的类。 在这些类中,一些标准函数往往是从数据机械推导而来的。在 Kotlin 中,这叫做数据类,并标记为data。定义这些类时,编译器为我们做了什么?自动生成了什么内容?我们可以通过使用,并反编译成java代码进行分析。工具Android Studio或Intellij都为我们提供了将kt转java的功能,这里介绍下as上边的用法:点击 Show Kotlin Bytecode 后,会出现 Kotlin Bytecode的窗口:这里可

2022-01-25 14:27:39 11534

原创 Android LiveData原理分析

该文章同步更新到稀土掘金链接前言官方介绍:LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。它有以下的优势:确保界面符合数据状态不会发生内存泄露不会因Activity停止而导致崩溃不再需要手动处理生命周期数据始终保持最新状态适当的配置修改共享资源接下

2022-01-24 14:15:23 1692

原创 自定义view高仿稀土掘金loading闪动字体效果

注:该文章同步发布到稀土掘金:链接前言由于通勤时间较长,在路上总会有时间刷刷文章。稀土掘金就是常用的一个app(这里非广告,哈哈哈)。前段时间,发表了篇文章:# 使用CollapsingToolbarLayout高仿稀土掘金个人中心页,也是跟它相关的。今天再来一篇,不是什么大技术,而是我们常用的自定义view那套东西,只是觉得效果精美,就想自己实现下~先上图:实现先分析下效果:字体部分内容高亮高亮部分为平行四边形,而非矩形实现思路:先绘制浅色字体,再绘制深色字体,不过深色字体只显示平行四边

2021-12-09 11:55:55 519

原创 Android组件化基础

注:该文章也同步发布到稀土掘金:链接前言公司包含三大业务线,每条业务线都有独立的app。功能模块难免会有重合~举个栗子,直播功能本来只在业务线A使用,但是由于业务拓展,现在业务线B和C也需要使用直播功能。这时候就有必要将直播功能做成一个独立的直播组件供三条业务线使用。构思既然要将直播做成组件,需要考虑哪些方面呢?既可独立运行,单独测试该组件功能;也可作为sdk,被其他项目使用统一管理:部署到私有化仓库,其他项目可配置引用基础实践全局控制配置在gradle.properties中的配置可

2021-12-08 10:55:38 462

原创 ViewPager2的使用:基本使用、源码分析、多种切换动画

注:该文章也同步发布到稀土掘金:链接前言ViewPager2是ViewPager的改进版本,提供了一些增强功能:垂直方向的支持可动态修改Fragment集合从右到左支持当然,这是官方新推的库,后续会获得更好的支持~这篇文章主要从基本使用、增强功能使用、viewpager到viewpager2的升级、通过ViewPager2.PageTransformer实现多种切换动画等几个方面进行介绍。使用基本使用引入viewpager2库// module的build.gradle文件im

2021-12-07 16:14:37 5171 2

原创 使用MotionLayout高仿华为运动健康我的页面

注:该文章也同步更新到稀土掘金:链接前言在上一篇文章中,主要讲解了CollapsingToolbarLayout配合AppBarLayout使用实现了折叠标题栏效果。这篇文章,再增加点效果:通过使用MotionLayout搭配AppBarLayout,除了实现标题栏的折叠效果,还支持标题栏内的子view平滑移动,让整个交互更加舒适~不多说,这里先上效果图:实现先分析下效果:用户头像和姓名会随着滚动,不断的移动~当appbar全部隐藏后,两个view会保留在左上角背景图片会随着滚动不断的往上

2021-12-03 15:55:49 2047

原创 使用CollapsingToolbarLayout高仿稀土掘金个人中心页

注:该文章也同步更新到稀土掘金:链接前言CollapsingToolbarLayout是android MaterialDeign提供的一个组件,通过搭配AppBarLayout可实现toolbar的折叠效果。下边就通过仿实现稀土掘金个人中心页来讲解它的具体用法。先上效果图:实现我们将toolbar分为两层:红色圈中的大模块,暂名:A绿色圈中的模块,暂名:B通过分层再分析下效果:当视图向上滚动时,A会逐渐折叠当A完全折叠后,B的图标会更新状态,并且用户的信息会向上浮动显示在B中

2021-12-02 16:56:55 2373

原创 android不同版本的gradle发布内容到Maven仓库

注:该文章也同步更新到稀土掘金:链接前言通常,一些基础功能组件、业务组件会被多个项目组使用。因此,我们有必要将其发布到私有的maven库,方便不同的项目组进行引用。由于gradle的不断升级,每个版本对于发布到maven私有库的方式有所不同。接下来主要将Gradle7.0作为边界进行分别说明。具体使用Gradle6.x及以下版本的使用apply plugin: 'maven' uploadArchives { repositories { mavenDeployer

2021-12-01 09:29:32 1062

原创 Jetpack-CameraX的使用:预览、前后摄像头切换、拍照

注:该文章也同步更新到稀土掘金前言官方介绍:CameraX 是 Jetpack 的新增库。利用该库,可以更轻松地向应用添加相机功能。该库提供了很多兼容性修复程序和权宜解决方法,有助于在众多设备上打造一致的开发者体验。一相机功能的开发使用向来是个麻烦事,涉及到各种设备的适配问题,需要在代码中添加一堆的设备专属代码。官方也可能意识到这个问题,camerax正是为了简化开发工作而推出来的库。声称:借助 CameraX,开发者只需两行代码就能实现与预安装的相机应用相同的相机体验和功能。这里先上效果图:

2021-11-30 13:56:58 2383 1

原创 QT使用vlc实现在线视频播放器

VlcPlayer介绍qt使用libvlc实现的在线视频播放器,支持拖动进度条改变播放进度,支持改变音量,静音等操作软件架构vlc目录包含了libvlc相应的库文件VLCPlayer目录包含了使用libvlc编写的播放器和使用demo使用说明VlcPlayer为单纯播放器控件ClassVideoWidget为包含了视频操作栏(暂停、进度条、静音等)的播放器控件项目地址VlcPlayer - gitee...

2020-10-21 22:26:17 2727 2

原创 Linux下配置Jenkins+Android自动化构建环境(二)

项目基本配置 点击新建,创建一个新的构建项目 选择创建的项目风格,点击ok后,进入到具体的构建配置 填写项目名称,项目描述源码管理jenkins本身支持了几种常用的源码管理工具:svn,git,cvs等;这里的配置采用的是svn,其他的工具类似 配置完成后,在项目的构建过程中,会自动的同步代码,再进行构建 通过Add添加svn对应的帐号密码信息 在添加后,就可以在选项中看到填写的相

2017-01-05 17:51:40 2478

原创 Linux下配置Jenkins+Android+Ant自动化构建环境(一)

JDK配置下载地址jdk-linux 安装步骤将使用jdk-8u65-linux-x64.tar.gz版,解压到/usr/: tar -xzvf jdk-8u65-linux-x64.gz在/etc/profile文件中配置环境变量,使用vim编辑// 需要root用户sudo vim /etc/profile编辑文件,在最后添加:export JAVA_HOME=/usr/jdk

2017-01-05 16:52:38 1681

翻译 使用Android Studio进行NDK开发和调试(gradle-experimental之官方文档的翻译说明)

版本更新版本更新的信息可以通过以下路径进行获取 gradle-experimental版本更新环境要求Gradle(参照三里边的版本要求)Android NDK r10eBuild Tool在19.0.0以上的SDKGradle版本要求不同版本的Experimental Plugin需要不同版本的gradle 配置文件的更新 从传统的Android Gradle Plugi

2016-12-19 11:40:31 3832

原创 使用Android Studio进行NDK开发和调试(gradle-experimental的使用)

在之前的一篇文章有介绍了Android的NDK开发的简单流程,假如这块还没有实践过,建议先去看看这篇文章,把整个流程搞懂,有助于这篇文章的学习Windows环境下Android Studio进行NDK开发 这里我主要讲述如何配置环境,使得我们可以对JNI中的C代码进行调试。关于整体的说明,在下篇文章将会通过翻译官方提供的文档进行阐述环境的配置配置根目录的build.gradle文件bui

2016-12-16 15:21:07 2609

原创 ContentService源码分析

简单介绍ContentProvider按照一定规则暴露自己的接口给其它应用来访问自己应用的数据(其实就是自定义增删改查接口并暴露出去,让别的应用访问自己的数据)。当其他应用需要用到该应用的数据时,可以使用ContentResolver,而通过ContentResolver我们可以完成两大功能: 1 通过其对ContentProvider中的数据进行添加、删除、修改和查询操作 2 通过其来监听

2016-11-07 08:56:31 550

原创 SystemServer源码分析

从SystemServer的main函数入手/** * The main entry point from zygote. */public static void main(String[] args) { new SystemServer().run();}这里创建了一个SystemServer并调用了它的run()函数,进入run()函数,这个方法内部比较多,分段分析:时间处理

2016-11-03 18:04:50 2386

原创 AlertDialog源码分析

构造方法protected AlertDialog(Context context) { this(context, resolveDialogTheme(context, 0), true);}protected AlertDialog(Context context, int theme) { this(context, theme, true);}AlertDialog(C

2016-11-01 17:56:50 527

原创 Dialog源码分析

构造函数入手public Dialog(Context context) { this(context, 0, true);}public Dialog(Context context, int theme) { this(context, theme, true);}Dialog(Context context, int theme, boolean createContext

2016-11-01 15:11:55 455

原创 AsyncTask源码分析

分析思路从execute()方法开始分析public final AsyncTask<Params, Progress, Result> execute(Params... params) { return executeOnExecutor(sDefaultExecutor, params);}看到execute()方法接受可变参数,最多可接受三个参数;内部调用了executeOnExe

2016-10-26 15:39:42 324

原创 Loop、Handler、MessageQueue和Message源码分析

Handler先看Handler构造函数// 默认构造函数,内部调用了带有两个参数的构造函数public Handler() { this(null, false);}public Handler(Callback callback, boolean async) { if (FIND_POTENTIAL_LEAKS) { final Class<? extend

2016-10-26 14:00:27 573

原创 Binder-系统服务和ServiceManager

系统服务分析1 获取系统服务@Overridepublic Object getSystemService(String name) { return SystemServiceRegistry.getSystemService(this, name);}内部是调用了SystemServiceRegistry.getSystemService(this, name);,那我们进入其g

2016-10-26 09:56:04 492

原创 Binder-基础知识和AIDL

Binder框架 提供了服务端接口、Binder驱动、客户端接口三个模块 - 服务端:一个Binder类的对象,该对象一旦创建,会创建一条隐藏的线程。该线程会接收Binder驱动发送的消息,收到消息后,会执行Binder对象中的onTransact()函数 - Binder驱动:任意一个服务端Binder对象被创建后,同时会在Binder驱动中创建一个mRemote对象,该对象的类型

2016-10-25 17:31:13 338

原创 Gradle--自定义Task

4.1 Writing Your Own Custom TasksThe Gradle DSL supports a task block for defining your own custom tasks. The API includes a wide range of existing tasks (like Copy , Wrapper , and Exec ) that you

2016-10-18 17:22:13 3532

原创 Gradle--Eclipse项目迁移AS以及使用gradle打包签名apk

2.1 Setting Project PropertiesGradle build files support property definitions using a simple ext syntax, where in this case “ext” stands for “extra.” This makes it easy to define a variable value onc

2016-10-18 14:56:37 1108

原创 Gradle--使用gradle构建Android项目的基础知识

1.1 Gradle Build Files in Android1 settings.gradle位于根目录,它指明了那些包含在多项目构建中的子项目(Android支持gradle多项目构建)2 build.gradle(top-level)位于根目录,在这里添加配置选项会对所有的子项目起效buildscript { repositories { jcenter()

2016-10-17 16:41:57 946

原创 Android仿UC浏览器切换网页背景色

平时会喜欢看下Android开发技术周报里边的文章学习下,这个网页做的不错,每周更新不少干货上去,很值得一看。因为每次都需要用浏览器去看,对我个人喜欢坐车看书的人来说,体验不算好。于是,自己鼓捣了个app,主要就是将这个网站的资源整合,然后重新排版了。已经上了豌豆荚,欢迎大家点击下载下载地址 考虑到有些人喜欢熄灯后躺在床上继续学习(额,其实这个习惯不好。。。),所以在app中增加了一个夜间

2016-08-31 14:14:17 1372

原创 Android使用SVG实现今日头条下拉刷新动画

1 SVG的全称是Scalable Vector Graphics,叫可缩放矢量图形。它和位图(Bitmap)相对,SVG不会像位图一样因为缩放而让图片质量下降。 2 Android L开始提供了新的API VectorDrawable 可以使用SVG(矢量图)类型的资源,在xml文件中的标签是vector。但想要好好的感受下SVG的使用,除了需要5.0之后的系统支持外,还需要使用Andr

2016-07-26 21:54:08 3949

原创 华为手机不兼容URI的使用问题

公司最近开展一个新的项目,需要加上版本自动更新的功能。在新版本上线时,有公司的外派同事反馈说在更新时,会直接奔溃。通过不断的查找发现,只有在华为部分手机出现了类似的问题(Mate8,P9都会)。这里把问题记录下 分析与解决1 情形自动更新使用了系统提供的DownloadManager,当下载完成时,通过广播机制对下载完成事件进行广播,action为DownloadManager.ACTION_DO

2016-07-23 22:45:34 5486

原创 Android仿QQ好友详情页-下拉顶部图片缩放效果

今天已经是这个星期连续加班的第四天了,趁着现在后台在处理逻辑问题,将前几天写的一个小例子整理下来。效果图效果分析1 向下滑动,头部的图片随着手指滑动不断变大2 向上滑动,不断的向上移动图片,直到图片不可见3 当顶部图片不可见时,向上滑动,滑动ListView实现思路1 由于这个View分上下两部分,垂直排列,可以通过继承LinearLayout实现::自定义一个DragImageView,该Vie

2016-07-22 21:02:04 2843 2

原创 Android中WebView与JS的交互

上家公司的主打产品是一个游戏社交类应用,里边有一套用户等级系统和一套付费系统。由于这个两套系统的界面不是固定的,而且支持的状态也根据用户的等级而有所不同,有时还需要根据节日或者当前推广的内容进行动态的调整。所以采用了webview加载页面的方式来实现。当然就免除不了会有Android原生方法与JS方法互相调用的情况。这里通过一个简单的例子阐述互调的实现方法,还有注意事项。实现1 定义一个提供方法给

2016-07-22 16:58:31 362

原创 android的aidl-手动实现aidl自动生成的Java文件

为了简化我们实现Binder进程间通信的繁琐步骤,系统提供了AIDL文件,编译通过即可生成对应的java文件。承接上篇文章Android进程间通信-AIDL的简单使用 ,这里手动实现aidl自动生成的aidl文件,便于我们进一步理解内部的一些逻辑。实现步骤1 定义一个IOperation接口,并在内部声明一个供客户端跨进程调用的方法,并使该接口继承IInterface接口。public inter

2016-07-21 21:55:30 6019

原创 Android进程间通信-AIDL的简单使用

AIDL:Android Interface Definition Language,即Android接口定义语言,用于生成可以在Android设备上两个进程之间进行进程间通信(IPC)的代码。下边从服务端和客户端两个方面来介绍使用AIDL来进行进程间通信的流程(以eclipse为开发工具,AS开发总的流程和原理也是一致的,但为了更好理解,加以说明)服务端1 创建一个aidl文件夹(可选),在该文

2016-07-18 22:43:25 575

原创 Windows环境下Android Studio进行NDK开发

Android Studio对Ndk的支持正在不断的完善。之前有试过写demo,成功运行了。但整个过程遇到了不少的问题,而且网上搜集到的问题答案各种各样,大部分都是互相复制粘贴,没有自己的思路。今天趁着放假,把自己实现过程记录下来项目结构图1 NDK配置1.1 首先需要到官网下载NDK,我下边的例子采用的是android-ndk-r10b。1.2 将下载的文件解压到一个目录(目录可自由选择),在环

2016-07-17 14:49:44 1034 1

原创 Android自定义Viewpager指示器PagerIndicator-仿微博头条效果

平时工作之余,喜欢看看新闻,手机难免会装了几个新闻阅读类的app。新闻类的app风格大致一致,可以选择不同栏目,栏目可以切换。最近就在用微博头条,感觉界面挺清新的。而且它使用的PagerIndicator挺好看的。昨晚居然准时下班了,趁着早就实现了下。今天用博客好好记录下上图效果分析1 每个tab都包含色块和文字,而且文字的显示个数不同2 文字:由未选中到被选中的文字颜色从黑色变成白色;由选中到未

2016-07-16 08:07:34 3029

原创 Android仿魅族日历首页

flyme5.0增加了很多优美的动画和交互,界面也变得相当精致。我手头现在就用着魅族MX5,感觉还不错哇!经常会打开它的日历看计划等,感觉它首页的滑动效果还不错,就试着实现一把。上图效果分析1 该首页由两部分组成:GridView展示的日历视图,下方的内容视图2 当选中日历的某一天后,向上滑动,内容视图会不断的向上移动,直到只含有选中日期的那一行显示为止3 伴随着内容视图向上移动,日历视图也会跟随

2016-07-12 22:19:26 2228 4

原创 Android自定义裁剪图片的View

前些天,分析了开源框架zxing的源码。里边有一个自定义的view,扫描界面的蒙层。这给我做自定义裁剪图片view的一些启发。因为,其实原理很相似,都是中间显示的图片没有被遮盖,四周有蒙层的效果。接下来,就按照这个思路实现这个自定义的view。上图效果分析1 刚进来,设置蒙层刚好包裹图片显示的大小2 当触摸的是边界的时候,增大蒙层的范围,即缩小透明区域的大小。3 当触摸的是透明区域的内部时,移动手

2016-07-09 13:19:50 992 1

原创 Android弹出式菜单-一种简单的实现方式

最近在使用百度阅读看书,发现上边有个有趣的小东西,就是弹出式菜单,还附有声音。其实,这种弹出式菜单,早些时候还是挺火的,不少app都有这样的一个菜单效果;最近貌似少见了些。这里就提供一种简单的实现方式上图效果分析 当没有菜单没有展示时,点击图标,菜单向上弹出,并有回弹的效果 当菜单已经展示时,点击图标,菜单回收;点击相应的菜单,菜单收回,调用定义的接口实现1 该类继承Relativ

2016-07-09 11:13:30 7031

Android自定义ViewPager指示器PagerIndicator

Android自定义ViewPager指示器PagerIndicator,高仿微博头条的效果

2016-07-16

android自定义图片裁剪view

android自定义图片裁剪view,可以自由拖动选择特定区域

2016-07-12

android仿魅族日历

android仿魅族日历视图,可滑动隐藏未被选中的日历部分

2016-07-12

弹出式菜单

弹出式菜单,仿百度阅读的弹出效果

2016-07-09

水波纹效果

水波纹效果的实现

2016-07-09

自定义progressbar

自定义progressbar,仿众多手机管家的进度条

2016-07-08

支持点击数值弹窗的折线图

支持点击数值弹窗的折线图

2016-07-02

支持弹出的饼状图

自定义饼状图,支持点击弹出扇形

2016-07-01

仿QQ邮箱下拉刷新动画

仿QQ邮箱下拉刷新动画(三个小球围绕中心转动)

2016-07-01

仿QQ邮箱下拉刷新动画(三个小球围绕中心转动)

仿QQ邮箱下拉刷新动画(三个小球围绕中心转动)

2016-07-01

自定义饼状图

自定义饼状图,支持点击弹出扇形

2016-07-01

自定义折线图

自定义折线图,支持点击每个值弹框提示

2016-07-01

空空如也

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

TA关注的人

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