Android
文章平均质量分 60
金福林
这个作者很懒,什么都没留下…
展开
-
MpAndroidChart自定义Fling手势
我们知道MpAndroidChart的k线是不支持fling效果的,如果我们要加一个fling效果可以在BarLineChartTouchListener添加如下方法://///////////////////////start----处理fling事件----start/////////////////////////////////////////////////// private Fling fling; //创建一个用于识别收拾的GestureDetector对象waiyuwu原创 2022-03-14 09:07:12 · 485 阅读 · 0 评论 -
一句话解决面试题--安卓篇
1.生命周期相关1.1 A activty跳转B activity走了哪些生命周期函数?A:pauseB:create Start resumeA:stop拓展:如果B的启动模式是sigletask/singleInstance且在任务栈中B:create start onNewIntent resumeA: stop1.2 B finish关闭返回AB:pauseA:restart start resumeB:stop destory1.3 此时按下home键又返回A: stop原创 2022-02-14 10:19:34 · 875 阅读 · 0 评论 -
安卓泛型的使用
文章目录前言一、泛型定义的初始化位置1.类2.接口3.方法二、泛型定义的限制类型(extend)三、泛型使用时的不确定类型声明(通配符 ' ?')前言我们为什么需要泛型?在JDK1.5之前是没有泛型的,其实这也并不影响我们的正常功能开发,但是我们需要用到大量的类型强制,运行时一旦强转错误就是导致程序崩溃,那么能不能在编译时就把这些检查做好呢?答案就在泛型中。所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。java中的泛型是语法糖,只存在编译阶段。泛型最主要的作用就是通过指定参数类型,.原创 2021-12-05 13:51:00 · 1012 阅读 · 0 评论 -
安卓mvp与mvvm怎么选?
文章目录mvpmvvm怎么选?未来趋势?mvpMVP架构其实可以说与MVC的优化,传统安卓的mvc中controller中任务太重,其实我们最开始开发过程中,也会把代码量较大的controller抽取一部分代码到业务工具类中,其实就是p层的雏形,只不过mvp架构把如何抽取规范化了。在mvp中,view视图层,代表Activity;p层,接口请求层。mvp可能导致内存泄漏,但是我们可以规避。mvvmmvvm是双向数据绑定,viewmodle是连接view和modle的桥梁。它在前端工程中使原创 2021-12-05 09:26:19 · 1503 阅读 · 0 评论 -
安卓mvp进阶封装实践
文章目录前言二、Base基础包封装三. Contract契约类封装4.使用总结前言说到 MVP ,大家应该都不陌生了,它比MVC逻辑更清晰,解耦更好,比MVVM使用要简单。但是它也有自己的缺点,比如要增加很多接口,可能导致内存泄漏,需要显示的初始化等等,这次我们就基于泛型对mvp封装一把,希望这是你理想中的效果# 一、基本结构二、Base基础包封装代码如下(示例):public interface BaseView { boolean isAlive();}public原创 2021-12-04 19:27:41 · 2273 阅读 · 0 评论 -
安卓Jetpack组件系列一之Lifecycle
文章目录前言1.什么是Jetpack?2.Jetpack组件库有哪些?一、Lifecycle简介二、使用步骤总结前言1.什么是Jetpack?Jetpack是众多组件的集合,是谷歌推出的一套引领开发规范的架构。我们看安卓开发者官网,jiepack已经与AndroidStudio、Kotlin同级别的地位上,可见谷歌对其重视程度。2.Jetpack组件库有哪些?Jetpack组件库目前有八十多种,而且还在持续增加中,不过这里面有些组件可能是我们非常熟悉的,比如Activity、Fragment原创 2021-11-28 17:28:36 · 1842 阅读 · 0 评论 -
安卓沉浸式状态栏,android沉浸式状态栏工具类封装
文章目录前言二、使用步骤1.定义2.使用3.效果前言沉浸式状态栏对安卓6.0以上版本很简单,今天分享一个封装好的工具,供大家参考二、使用步骤1.定义代码如下:package com.example.mystudy_kotlin.utilsimport android.app.Activityimport android.graphics.Colorimport android.os.Buildimport android.view.Viewimport android.view.原创 2021-11-28 16:05:36 · 1512 阅读 · 0 评论 -
安卓静态代理、动态代理以及仿retorfit实现
文章目录什么是代理?一、静态代理三、仿retorfit实现动态代理什么是代理?代理模式其实就是我实现你的方法代替你去做某件事 为啥要这么麻烦呢!!!其实是为了不去修改原有的代码,通过代理也可以访问这个对象而且可以进行扩展代理分为静态代理和动态代理,主要用于我们不想修改原本的实现逻辑,却想再原本实现逻辑上做拓展静态代理:实现被代理类的接口,重新需要代理的方法使用场景:比如我们想对所有的某些click统计点击事件耗时,就可以使用静态代理方式实现。retrofit通过动态代理获取到方法上的原创 2021-11-27 21:29:20 · 1162 阅读 · 0 评论 -
Arouter用法及原理2:源码介绍
文章目录前言一、开发阶段(arouter-annotation)二、编译阶段(arouter-compiler)三、运行阶段(arouter-api)四、运行加速(arouter-register)前言我把Arouter分为开发阶段、编译阶段和运行阶段,分别对应的arouter的三个依赖包一、开发阶段(arouter-annotation)arouter-annotation主要定义了注解以及相关参数供我们使用二、编译阶段(arouter-compiler)arouter-compil原创 2021-11-21 16:24:11 · 1642 阅读 · 1 评论 -
Arouter用法及原理1:基本用法
文章目录前言一、添加依赖和配置二、使用步骤1.初始化2.普通跳转Activity2.拦截器2.自定义全局降级策略总结前言组件化被越来越多的Android项目采用,而作为组件化的基础——路由也是重中之重。本篇文章将详细的分析阿里巴巴开源的路由框架ARouter。本文将从基本用法和原理介绍Arouter。一、添加依赖和配置android { defaultConfig { ... javaCompileOptions { annot原创 2021-11-20 23:50:58 · 1463 阅读 · 0 评论 -
安卓api compile implementantion apt kapt annotationProcessor有什么区别?
你可能经常在build.gradle文件中看到,这样的字眼,annotationProcessor、android-apt、Provided,它们到底有什么作用?compile(旧)== api(新) api关键字引入的包对于其他Module来说是可见的implementation implementation关键字引入的包对于其他Module来说是不可见的apt(旧)===annotationProcessor(新) 用于引入注解包 从Android Studio 3.0开始原创 2021-11-20 21:40:42 · 1565 阅读 · 0 评论 -
安卓架构师之路--线程安全
文章目录一、概览二、什么是线程安全?三、Syncnoized1. 使用方法2. jvm优化3.Synchronized的优势4.Synchronized的劣势四、volatile可见性修饰五、aotomic原子类ReentrantLock1.基本用法一、概览首先用一张图来概述本文的基本内容二、什么是线程安全?线程安全的本质是:能够让并发线程有序的进行,且同一时刻只能有一个线程访问同步资源。三、Syncnoized1. 使用方法private synchronized void fun(){原创 2021-11-09 21:51:59 · 2451 阅读 · 0 评论 -
安卓架构师之路--多线程
文章目录一、概览二、创建线程的五种方式1方式一:最普通的方式方式二:多用于需要知道进度的子线程,如apk更新方式三:handlerThread,用于主线程向子线程发送消息方式四:IntentService方式五:线程池二、线程的优先级1.Java方式2.安卓方式三、线程的几种状态一、概览首先用一张图来概述本文的基本内容二、创建线程的五种方式1方式一:最普通的方式 public static void simpleThread() { new Thread(new Runna原创 2021-11-09 21:07:08 · 190 阅读 · 0 评论 -
OkHttp与Reftrofit2
一.前言越来越多的人使用okhttp作为自己的网络访问框架,okhttp与Reftrofit的结合也是很多人喜欢用的.本文就OkHttp与Reftrofit2与RxJava的结合使用的小demo介绍这三者的联合使用.二.okhttp1.引入库文件 compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.squareup.okio:原创 2017-03-26 13:26:28 · 2925 阅读 · 1 评论 -
TCP-Socket-HTTP的关系
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手” 释放一个TCP连接需要经过“四次握手”2.HTTP连接HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是Web原创 2017-07-04 21:15:32 · 407 阅读 · 0 评论 -
android 5.0和6.0后新增的控件总结
文章转自http://blog.csdn.NET/aqi00/article/details/59108336Android自5.0后增加了不少新控件,帮助开发者实现了更酷更炫的UI效果。可是对于初学者来说,这些新控件的用法不像老控件那么简单,网上相关的使用介绍也不如老控件那样丰富,种种情况无疑加大了我们学习这些新控件的难度。为此,博主初步整理了android在5.0和6.0之后的新增转载 2017-07-23 20:39:00 · 989 阅读 · 0 评论 -
安卓自定义view之Canvas和Paint方法
简介在自定义 View的时候,Canvas和paint是我们经常会用到的东西. Canvas可以理解为画布的意思. Paint可以理解为画笔的意思. 下面将Canvas和paint对象常用方法做个笔记,方便记忆。Canvas 方法一.改变Canvas的坐标系位置1.平移坐标系canvas.translate(myWidth / 2, myHeight / 2);2.缩放坐标系canvas.sc原创 2017-08-17 22:36:47 · 668 阅读 · 0 评论 -
Android抽象布局——include、merge 、ViewStub
文章转载自:http://blog.csdn.net/xyz_lmn/article/details/14524567在布局优化中,Androi的官方提到了这三种布局、、,并介绍了这三种布局各有的优势,下面也是简单说一下他们的优势,以及怎么使用,记下来权当做笔记。1、布局重用标签能够重用布局文件,简单的使用如下:[ht转载 2017-09-23 21:26:52 · 346 阅读 · 0 评论 -
UI优化之 Hierarchy Viewer使用详解
文章转载自.http://blog.csdn.net/swordgirl2011/article/details/52887925 功能Hierarchy Viewer工具提供了一个可视化界面显示布局的层次结构,让我们可以进行调试,从而优化界面布局结构。2. 启动工具启动方式有两种,一种是通过终端命令,输入hierarchyviewer,进行启动,第二种转载 2017-09-23 21:42:06 · 833 阅读 · 0 评论 -
安卓websocket长连接
简介WebSocket协议是一种建立在TCP连接基础上的全双工通信的协议。 全双工就是指客户端和服务端可以同时进行双向通信,强调同时、双向通信. 关于WebSocket协议,一般来说,如果是通过https协议开始升级而来的,那么一般是wss://开头,如果是http协议开始升级而来的,那么一般是ws://开头在安卓上,一般有两种方式去实现websocket okhttp以及Java-WebSo原创 2017-06-29 00:12:41 · 5455 阅读 · 0 评论 -
安卓mvp教程
一.前言在早起的安卓应用,大概2014年之前,大部分的应用都是使用传统的mvc进行架构.而传统的mvc有它的弊端.我们先从理论上对比下mvc与mvp. mvc的弊端:大部分情况下view和controller都是由activity 控制,activity责任太重了.这样mvp优势就凸显出来了.二.mvp介绍 随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责。为了更好地细分视原创 2017-05-14 14:31:02 · 661 阅读 · 0 评论 -
安卓事件传递机制图解
一.前言说起安卓的事件传递机制我们都知道是自上而下又自下而上,相信很多人都能说出来不少,我们今天来用图例的方式来给大家展示一下.二.正常简单事件传递过程图我们一个activity上有一个Linearlayout,里面有一个TextView 点击textView的时候事件传递的步骤如下. 二.其他复杂事件传递过程图三.up事件传递过程上面我们说的是down事件,那么up事件是不是跟down事件传递原创 2017-05-01 14:24:05 · 805 阅读 · 0 评论 -
[自定义控件系列2]--进阶篇:可自动换行的ViewGroup
前言上一篇文章介绍了简单的自定义viewGroup怎么实现 [自定义控件系列]–自定义viewGourp 下面我们介绍一个可以自动换行的Viewgroup,这是一个很常见的需求,先看一下实现效果。 具体实现package com.example.king.kingcustomview;import android.content.Context;import android.util.A原创 2017-04-09 21:07:16 · 675 阅读 · 0 评论 -
[自定义控件系列]--自定义viewGourp
一.前言ViewGroup相当于一个放置View的容器,我们通过不同子view,你可以按照自己特定的规则去摆放。 通常自定义控件可以分为这么几个阶段 1,准备工作:(加载阶段) 2,规划大小:(测量阶段) 3,绘制位置:(布局阶段) 4,画:(绘制阶段) 而我们的自定义viewGroup一般需要用到前三个步骤二.简单示例我们先试做一个最简单的demo, 需求:一个viewGourp里面原创 2017-04-09 17:14:47 · 686 阅读 · 0 评论 -
android常用的设计模式总结 一
前言对于开发人员来说,设计模式是提高编程水平的一个非常重要的门槛. 以前写过一些设计模式的文章,有兴趣可以参考一下. 这一次来写一下android中设计模式的应用,相信你会对设计模式有一个更深入的理解. 什么是设计模式? 设计模式大总结-创建型模式 设计模式大总结2-结构型模式单例模式public class Singleton { private static Singleton原创 2017-03-12 15:55:43 · 852 阅读 · 0 评论 -
利用Theme实现Acitvity切换
在实际需求中我们可能有自定义Activity的切换动画的情况,这里我们可以通过修改Theme的方式实现: 1.首先写进入和退出的动画fade_in.xml:<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android" android:durat原创 2016-11-04 14:37:24 · 631 阅读 · 2 评论 -
android wifi连接打印机并获取打印机状态
最近在做wifi连接打印机打印小票.如何获取打印机的状态是个问题,简单的写一下大家可以参考一下. /** * 获取打印机状态 * @return */ public String getPosStatus() { try { Socket sock = new Socket(ip, 4000); // ip and por原创 2016-09-22 13:26:06 · 11597 阅读 · 15 评论 -
Android Studio你可能还不知道的操作
Search ActionAndroid Studio快捷键众多,因此Android Studio提供了一个类似搜索指令的入口,通过快捷键”Command+Shift+A”可以快速调出这个搜索入口,例如要查找打开最近的工程这样一个指令,可以直接输入”Open Recent”,按下回车键后就可以直接使用这条指令操作与导航单词选择在Android S转载 2017-09-24 21:28:27 · 2384 阅读 · 0 评论 -
Android性能优化--Inspact Code代码检查
一.前言在Android Studio中,Google还提供了很多代码分析工具,这些工具都集中在Android Studio的Analyze菜单中通过Inspect Code功能,可以让IDE分析整个工程,类似于Android的Lint分析Inspect Code不仅提供了Lint的检测功能,还提供了一些其他的代码静态分析结果,同时给出了大致的修改意见,你也可以选择Code Cleanup功能来原创 2017-09-24 22:11:09 · 2581 阅读 · 0 评论 -
安卓---JNI使用
交叉编译系统平台:Windows、Mac OS、LinuxCPU平台:ARM、X86、MIPS概念:在一个平台下打包编译出另一个平台可以执行的程序#交叉编译原理源代码->预编译->编译->链接->可执行程序原理:模拟另一个平台的特性去编译代码#交叉编译工具链*ToolChains,一个工具执行完毕自动执行下一个工具#常见工具NDK:native developement kitsCDT:eclipse插件,C/C++ developement tool,高亮显示C语言关键字cygwin:L原创 2014-08-11 10:16:00 · 1039 阅读 · 3 评论 -
AndroidStudio3.0 Android Profiler分析器(cpu memory network 分析器)
本文转自:https://blog.csdn.net/niubitianping/article/details/72617864 Android Profiler分为三大模块: cpu、内存 、网络。基本的使用在上一篇文章有讲到。这里详细说一下。一、 CPU分析器CPU ProfilerCPU分析器可帮助您实时检查应用程序的CPU使用情况和线程活动,并记录方法跟踪,以便您可...转载 2019-01-07 18:12:19 · 577 阅读 · 0 评论 -
PopupWindow布局平滑切换到View布局
一.前言popupWindow是我们常用的控件了,我们经常会用它来实现一些弹框需求.然而我们的产品很可能突然会对弹框外部的某些按钮的点击做出响应而且还不能让当前popupWindow消失,此时我们内心是崩溃的,真是悔不当初啊,为什么当初不干脆使用view布局引入的形式来做呢?那么有没有一种办法让我们的popupWindow快速切换到View布局形式呢?我们来看看项目的例子二.实现1.核心...原创 2018-12-06 15:37:36 · 575 阅读 · 0 评论 -
安卓WebView改变网页文字背景颜色
原理为动态向html里面注入js方法,然后执行,不难,直接贴代码关键代码在onPageFinished方法里面输入webview.loadUrl(“javascript:”+“js方法名或者.js”)。mWebview.setWebViewClient(new WebViewClient() { @Override public boolean...原创 2018-09-27 15:15:51 · 4969 阅读 · 0 评论 -
gradle配置优化及dependencies中各种依赖方式说明
一.前言当我们用AndroidStudio新建项目时候发现默认的compile已经改为了implementation. implementation以前并没有接触过,这里干脆总结一下dependencies中各种依赖方式的区别.二.各种依赖方式说明implementation 这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖...原创 2018-05-23 16:29:04 · 36377 阅读 · 2 评论 -
安卓性能优化总结
一前言二卡顿的常见原因三导致卡顿的常见解决方案四过渡绘制五层级过深六 使用Traceview进行分析优化一.前言开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户. 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。从设计师的角度,他们希望App能够有更多的动画,图片等时尚元素来原创 2018-01-27 15:49:35 · 539 阅读 · 0 评论 -
主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解
转载自:http://www.cnblogs.com/YingYue/p/6118972.html,收藏在此,感谢原创。主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解以svn为例,git的master相当于trunk,dev分支相当于branches-------------------------------------转载 2018-01-08 16:11:15 · 1035 阅读 · 0 评论 -
Android View坐标系详解(getTop()、getX、getTranslationX...)
View 提供了如下 5 种方法获取 View 的坐标:1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight();//相对父容器2. View.getX()、View.getY();//getX()==getLeft()、getY==getTop()。3. View.getTranslationX()、View.getT...转载 2018-10-18 09:31:49 · 2189 阅读 · 0 评论 -
安卓自定义属性的使用
一.前言自定义属性大家都不陌生,在这里总结一下希望对大家能有帮助.1.在项目文件res/value下面创建一个attr.xml文件<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="kingtest"> <attr name="animationDuration" format原创 2017-09-03 16:22:14 · 887 阅读 · 0 评论 -
android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
文章转载自:http://blog.csdn.net/jason0539/article/details/42743531在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚。现在把整个总结一下。其实只要把下面这张图看明白就没问题了。涉及到的方法一共有下面几个:view获取自身坐标:getLeft(),转载 2017-09-10 23:15:28 · 551 阅读 · 0 评论 -
安卓behavior详解3--自定义behavior详解
一.前言官方定义: A Behavior implements one or more interactions that a user can take on a child view. These interactions may include drags, swipes, flings, or any other gestures. 中文: 一个Behavior实现了一个或多个用户可以原创 2017-09-17 20:13:00 · 2580 阅读 · 0 评论