自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 Flutter启动流程浅析

flutter启动流程浅析

2023-02-15 18:22:40 1400

原创 flutter的坑

1,git@gitlab.*******.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). fatal: Could not read from remote repository.flutter pub get时报这个错,但是我已经配置好ssh了,key也添加到平台上了,在命令行操作也可以git clone,也可以push,就是pub get 的时候不行!!!!气死我了!!!!好吧,我在执行下面这个命令行时就可以了:.

2021-08-29 17:08:50 289

原创 Flutter自定义Widget-可以监听键盘高度的TextField

现在我们有这个需求,要求输入完成后所有字母都转大写,看起来很容易,直接写个TextField,然后在onEditingComplete里处理不就行了,但是,你会发现,键盘里还有个下拉按钮

2021-06-01 18:44:06 1366 2

原创 Android小Tip

1,动态改变textView的颜色String s = "这是" + "<font color='#FF6131'>" + "变色的" + "</font>" + "字";textView.setText(Html.fromHtml(s));2,全屏并设置透明栏/** * 设置透明状态栏,需要写在设置布局前,最好是在BaseActivity中写 */private void setStatusBar() { if (Build.VERSION.SDK_

2020-06-23 22:33:53 247

原创 Android设计模式——代理

一,先说下静态代理:快520了,小王想去买SK2送女友,但是太贵了,于是拜托在国外的好友小P买,这位小P便是小王的代理。主体便是以下三个文件,小王和代理类都继承接口,实现具体的方法。//首先定义公共接口public interface ICustomer { void buySK2();}//表示小王的类public class XiaoWang implements ICustomer { @Override public void buySK2() {

2020-05-19 16:23:06 141

原创 Android 事件分发机制

先看下Activity,View,Window的区别activity是四大组件之一,也是我们的界面载体,展示界面,可以理解为控制单元;View是一个个的视图,这些视图可以搭载在一个layout文件上,通过activity的setContentView()方法传递给activity;window是一个窗体,每个activity对应一个window,通常我们在代码中用getWindow()来获取,...

2020-05-03 11:42:22 217

原创 Android基础(数据结构)

今晚不想写公司项目了,头晕晕的,整理下数据结构吧:首先,需要明白数据结构的继承关系,数据结构一切都源于Collection接口和Map接口~Collection继承接口Iterable:顾名思义迭代,该接口只是返回了迭代器对象Iterator<T> iterator();接下来就可以通过iterator的hasNext方法对list进行迭代了。数据结构分为线性表首...

2020-05-02 21:21:51 1125

原创 Android 算法面试题

冒泡排序:重复地走访过要排序的数列,每次比较相邻两个元素,如果它们的顺序错误就把它们交换过来,越大的元素会经由交换慢慢“浮”到数列的尾端。for(int i=0;i<list.length;i++){ for(int j=i+1;j<list.length;j++){ if(list[i]>list[j]){ int te...

2020-04-23 10:16:38 259

原创 Framework APP和Activity启动流程

启动前:1,init进程是所有Linux程序的起点,会启动ServiceManager,fork一些守护进程,也是Zygote的父进程,通过解析init.rc孵化出Zygote进程。2,Zygote是所有Java进程的父进程,所有的APP进程都是由Zygote进程fork出的(因为每个APP都是运行在各自的虚拟机中,APP每次运行都要重新初始化和启动虚拟机,很耗费时间,Zygote会把已经...

2020-04-17 17:15:20 230

原创 Flutter教程——Dio的封装

Dio是开源的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等…基础学习:https://book.flutterchina.club/chapter10/dio.html一,首先,添加依赖 https://github.com/flutterchina/dio 可以看这儿的版本,在pub...

2020-04-17 15:14:08 3652 1

原创 Flutter教程——Widget

一,引用Flutter中文网的定义:Flutter Widget采用现代响应式框架构建,这是从React中获得的灵感,中心思想是用widget构建你的UI。 Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么。当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同, 以确定底层渲染树从一个状态转换到下一个状态所需的最小更改。在f...

2020-04-16 22:32:00 390

原创 Flutter教程——为什么使用Flutter和Flutter的语言Dart

前几个月因为公司业务需求,需要使用跨平台框架Flutter,现在有时间了,记录下这几个月的学习笔记:一,为什么使用Flutter1,Flutter上手简单是面向对象语言,和我以前使用的Java有共同性,使用响应式框架,具有大量的widget库和API,上手简单;2,可以快速开发具有热加载功能,几毫秒就能运行程序,提高开发效率。3,性能好Skia在Android源码 ex...

2020-04-16 16:23:26 470

原创 Framework学习笔记(一)

参考https://blog.csdn.net/huaxun66/category_7203839.html,写下自己的学习笔记,因为敲一遍印象会深刻,感谢原博主提供学习素材。Android系统架构Android本质上是在Linux系统上增加了Java虚拟机,并在虚拟机上搭建了一个JAVA的application framework,所有的应用程序是基于这个framework之上的。A...

2020-04-09 14:23:27 250

原创 Android Context类

Context

2020-03-25 16:56:13 256

原创 Android设计模式汇总

一,先说六大原则:1,单一职责原则:就是一个类就做一件事,它有单一的职责,比如,activity就让它显示view,不管那些网络请求、适配器啥的。该原则注重职责,主要针对实现和细节。2,开放封闭原则:类、模块、函数是可以拓展的,但不能修改。这样代码比较稳定,比如不能碰到啥事儿就去修改基类,使用这个基类的可能不止这一个子类啊。3,里式替换原则:子类可以扩展父类功能,但不能改变父类原有功能...

2020-03-20 16:14:18 116

原创 Android设计模式——装饰者模式

先说定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。这个模式属于结构型模式,比如我们给给自己的手机贴了膜,套上手机套,这就变成了一个不怕摔的手机,本质上还是手机,但是多了不怕摔的特性。所以,对于一个类,当要在不改变它的本质的基础上扩展一个类的时候,就需要装饰装饰了。举一个在源码中的例子,就是大家很熟悉的Context:Context是一个抽象类,...

2020-03-20 15:49:30 199

原创 Android设计模式——建造者模式

我感觉这个设计模式真是太简单,太好用了,这是一个创建型模式,定义是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。我的理解就是不需要关心建造过程,就像做菜一样,需要啥直接拿过来用,想放酱油就拿酱油,想放醋就放醋。用途也很多,Retrofit和OkHttp都是用这个模式创建的,先看下OK HTTP的吧,简单说就是想增加拦截器就直接增加,想设置缓存也是直接设置,就像组装一...

2020-03-20 14:23:26 136

原创 Flutter教程——在已安装AndroidStudio的情况下的安装配置

我之前一直是Android原生开发,因项目需要,得用Flutter了,空闲之下记录下Flutter的安装配置~第一步:去flutter官网下载其最新可用的安装包,然后解压,最好不要解压在C盘下吧,我是解压在了F盘。第二步:设置环境变量,如图所示,在用户变量下添加三条:Path下添加 flutter\bin 的全路径;名为PUB_HOSTED_URL,值为https://pub.flutte...

2020-01-15 14:52:44 272

原创 Android设计模式——工厂模式和抽象工厂模式

简单说就是父类抽象出方法来,子类去实现。普通工厂模式:父类是抽象类,子类实现父类的抽象方法。抽象工厂模式:举例说明:普通工厂模式:1,先定义一个苹果的抽象类,并抽象出摘苹果的方法public abstract class Apple { public abstract void pluckApple();}2,以下两个子类继承父类,实现抽象方法,一个是红苹果...

2019-12-19 19:14:49 219

原创 Android设计模式——单例模式

这个模式就是词面意思,就是一个类就只有一个实例,这样可以实现资源的复用。一,写法有以下几种:1,懒汉式:为啥叫懒汉呢,因为它可以实现延时加载,当类初建时,只是声明了对象,只有用到时还会初始化,比较懒。缺点是不能保证单例,当线程比较多时肯定不行,如果你能确保调用这个类时是单线程并且想保证时效的话,可以酱紫。public class LazySingleton { privat...

2019-12-19 16:58:51 112

原创 Android自定义View——一个通用的折线趋势图组件

为啥说是通用的呢?因为你可以随便放几条折线都行,随便几个说明背景都可以。。。颜色神马都可设置。。。为啥这么随便?因为公司业务需要,有的折线图是2条折线、2个说明背景色块,有的需要1条折线、3个说明背景,还有个奇葩的是1条折线、4个说明背景,总不能每个都要写一个自定义View吧~先看效果图:这是两条折线,两个背景图的(拍照不是截图,所以看起来没那么工整,数据我都对比过了,准的一塌糊涂!!!)...

2019-12-19 10:43:40 729

原创 android面试(RxJava)

RxJava:一个在JVM上使用可观测的序列来组成异步的,基于事件的程序的库。说白了就是异步优势:使用:先明白三个概念:Observable被观察者,Observer观察者,Subscribe订阅上游Observable和下游observer通过subscribe建立连接,总共就3步:创建上游,创建下游,建立连接。可以有个很简便的链式写法:subsc...

2019-12-10 11:33:16 3122 1

原创 Android面试(JVM部分,含存储区、GC、内存溢出泄漏优化)

目录1,存储区功能划分栈区(stack)堆区(heap)全局区(静态区)常量池程序代码区2、GC机制(1)如何确定哪些对象可以回收?(可达性分析算法)(2)jvm会在什么时候回收?(3)gc怎么回收?使用最多的是分代收集算法3、内存分配3.1,jvm内存有3个区域:3.2,内存分配4、内存泄漏及解决方法5、内存溢出6、WebView内...

2019-12-10 11:30:49 207

原创 volley源码解析

(1)先看Volley类的newRequestQueue方法,请求都是加到请求队列中执行的。(1.1)public static RequestQueue newRequestQueue(Context context) { return newRequestQueue(context, null);//一般传的HttpStack 都是null }//真正...

2019-12-10 11:23:40 125

原创 android 超简单的MVP+Retrofit+RxAndroid+模拟接口响应信息+随时切换BaseURL

写这篇博客目的是记录下自己写的网络请求框架,因为公司目前工作需要,需要一个可以动态变更BaseURL的请求框架(OEM厂商好几个),但是,后台还没写好(接口都没定义),所以我得自己模拟网络请求,所以还添加了拦截接口响应信息的拦截器。还有,这期间我参考了很多大神的博客:比如动态切换BaseURL是:https://www.jianshu.com/p/2919bdb8d09a 非常感谢!!!...

2019-11-19 13:11:36 511

原创 Android自定义View——心电图,曲线图,波形图

公司要求做个心电图,昨天就写了下,原谅我懒得弄视频了,看图:点击开始开始绘制,绘制屏满后,曲线向左移,点击停止则停止绘制。首先自定义View,WaveShowView,重写其onLayout,onDraw方法,注释写的很清楚了:public class WaveShowView extends View { private float mWidth = 0,mHeigh...

2019-11-13 09:44:20 4916 7

原创 Android-自定义View之 可换行的radioGroup 和 字母索引

public class CheckBoxGroup extends LinearLayout { private HashSet<Integer> checkedList = new HashSet<>(); private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener;...

2019-11-12 10:03:25 133

转载 Android学习-网络通信那点儿事儿

参考大神博客https://www.jianshu.com/p/45d27f3e1196,https://www.jianshu.com/p/116ebf3034d9我写下我自己的理解,还没完善目录一,计算机网络体系结构:就是计算机网络的各层和一些协议的集合。二,TCP协议:传输控制协议TCP报文段格式TCP连接三次握手:四次挥手:确保双方都释放连接三,UDP协议...

2019-09-09 10:36:17 293

原创 Android面试(Java部分)

目录一,Java基础1.谈谈你对java多态的理解2.== 和 equals 和 hashCode的区别3.String,StringBuilder,StringBuffer的区别4.内部类5.抽象类(abstract class)和接口(interface)的区别6.进程和线程的区别7.序列化8,synchronized,volatile关键字9,强...

2019-08-05 18:15:35 340

原创 Android面试七(线程及线程间通信)

1,线程的概念线程是进程中的多条执行线路.2.开启线程的三种方法第一种:继承Thread类,覆盖run方法,使用start方法开启线程,使用简单。第二种:实现Runnable接口,重写run方法,创建runnable实例作为target,传入Thread中,即new Thread(runnable).start();这样耦合度低,类的扩展性更好。第三种:匿名内部类new Thre...

2019-08-02 17:05:11 383

原创 Android面试六(Binder)

一,Linux内核的基础知识1,进程隔离/虚拟地址空间:进程间是相互独立的,不可以直接共享数据的。不同的进程分配在不同的虚拟地址空间,都有自己独立的内存来存储数据。2,系统调用:对内核保护,支队应用程序开放许可的资源。应用程序可以通过系统调用来调用内核的部分开放程序。3,binder驱动:各个进程间,通过binder通信进行交互。二,Binder通信机制介绍1,为什...

2019-08-02 13:08:07 143

原创 Android面试四(BroadCast)

一,广播1,广播定义Broadcast是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。(其实类似于观察者模式,当被观察者数据变化时,会通知所有观察者。)2,使用场景可以在同一个app具有的多个进程的不同组件之间的通信机制。不同APP之间的组件之间消息通信。3,广播种类(1)...

2019-08-02 10:54:35 173

原创 Activity面试三(Service)

一,serviceservice是一种可以在后台执行长时间运行操作而没有用户界面的应用组件。二,service和Thread的区别(其实二者没有任何关系的)(1)Service运行在主线程上,不是独立的,是依托于主线程的,不能执行耗时操作,否则会ANR,注意,服务不是后台。如果一定要进行耗时操作:可以新开线程执行耗时操作。(既然service也是新开线程执行耗时操作,但为什么不...

2019-07-31 21:43:47 143

原创 Activity面试二(Fragment)

一,为什么被称为第五大组件有自己生命周期,但是必须依附activity1,fragment加载到activity的两种方式动态:通过fragmentTransaction:fragmentManager=getSupportFragmentManager();fragmentTransaction=fragmentManager.beginTransaction();s...

2019-07-26 18:36:06 115

原创 Android面试一(Activity面试)

一,Activity生命周期onCrate(),onStart(),OnResume(),onPause(),onStop(),onDestory()1,4种状态running/paused/stopped/killedstopped:不可见,被另一个Activity覆盖,如果内存不紧张,成员变量还会在2,生命周期分析2.1,启动: onCreate(),onDestory...

2019-07-26 15:35:38 197

原创 Java随心记

1,数组,ArrayList, HashSet, HashMap数组:有序,长度一定不可变ArrayList: 有序的,但数组有限定的长度,list功能更强大,长度可变。HashSet:无序,长度可变,装数据按照key-value规则,不重复,配合Iterator使用。Iterator it =set.iterator();while(it.hasNext()){ sy...

2019-05-24 17:37:09 156

原创 MySQL笔记

一,安装:1,先在官网下载安装包,我下载的是zip包,直接解压缩就可以用的mysql-5.6.42-winx64.zip2,解压,我是解压在:D:\MySQL\mysql-5.6.42-winx643,配置环境变量,在目录path下追加D:\MySQL\mysql-5.6.42-winx64\bin4,在D:\MySQL\mysql-5.6.42-winx64新建my.ini文件...

2018-12-17 10:29:52 112

原创 Python笔记

Python3创建一个简易的服务器,如果在D盘的ServerProject文件夹下则先打开cmd,进入该文件夹下,输入以下语句:

2018-12-12 14:58:49 105

原创 Android编译报错问题集锦

或者出现Error: Some file crunching failed, see logs for details这个问题。出现这种问题我感觉有文件或图片的后缀名的原因。我们项目是从Eclipse上转到AndroidStudio,会有.9.png的坑,每次出现这样的问题,我都是这样改的,直接添加红色那段就可以,用来关闭AndroidStudio对PNG合法性检查的:android...

2018-11-21 10:48:48 6998

原创 Androidstudio最简单的打成jar包的方法

这个真是干货啊,在项目中常常需要自己写工具包,但这工具包也不完善,有时候需要改,改完后还要打包,很麻烦。给同事说了后,同事告诉了我一个特简单打包的方法: 找到module( 比如process )的build文件夹,依次打开intermediates、bundles、release文件夹,classes.jar包就是该module生成的jar包,但是在主程序的build.gradle文件夹的dep

2017-11-06 16:32:01 221

位移动画和listview点击事件

一个简单的demo,关于位移动画的,点击选择时间,选择框显示时从下向上,隐藏时从当前位置想下。另外,涉及到listview的点击效果。

2017-11-03

空空如也

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

TA关注的人

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