- 博客(67)
- 资源 (2)
- 收藏
- 关注
原创 Activity隐式启动
action的匹配规则action在Intent-filter中可以设置多条intent中的action和intent-filter中的action必须完全一样时(包括大小写)才算匹配成功intent中的action只要与intent-filter其中的一条匹配成功即可intent中必须指定action否则匹配失败且intent中action最多只有一条<activity an...
2019-12-14 20:45:02 275
原创 Activity的启动模式
standard标准模式,这是系统的默认模式每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在在这种模式下,谁启动了这个Activity那么这个Activity就运行在启动它的那个Activity所在的栈中需要注意:当我们使用ApplicationContext去启动standard模式的Activity的时候会报错。因为standard模式的Activity默...
2019-12-14 16:57:47 276
原创 View事件分发机制
View的Touch事件传递dispatchTouchEvent用来进行事件的分发。如果事件能够传递给当前View,那么此方法一定会被调用,返回结果受当前View的onTouchEvent和下级的dispatchTouchEvent方法的影响,表示是否消耗当前事件。onInterceptTouchEvent用来判断是否拦截某个事件,如果当前View拦截了某个事件,那么在同一个事件序...
2019-11-07 22:39:54 220
原创 Android App启动优化
App启动方式冷启动:指APP在手机启动后第一次运行,或者APP进程被kill掉后在再次启动。温启动:App进程存在,当时Activity可能因为内存不足被回收。这时候启动App不需要重新创建进程,但是Activity的onCrate还是需要重新执行的。热启动:App进程存在,并且Activity对象仍然存在内存中没有被回收。可以重复避免对象初始化,布局解析绘制。查看启动时间com....
2019-11-06 17:18:18 291
原创 Kotlin——02.类和对象
类的定义Kotlin 类可以包含:构造函数,初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字 class 声明类,后面紧跟类名:class Person{ // 类名为 Person // 大括号内是类体构成}可以在类中定义成员函数:class Person { fun eat() { //成员函数 println("吃饭"...
2019-11-05 22:25:47 193 1
转载 自定义view——01.基础
自定义view实现方式类型定义自定义组合控件多个控件组合成为一个新的控件,方便多处复用继承系统View控件继承自TextView等系统控件,在系统控件的基础功能上进行扩展继承View不复用系统控件逻辑,继承View进行功能定义继承系统ViewGroup继承自LinearLayout等系统控件,在系统控件的基础功能上进行扩展继承ViewViewG...
2019-11-04 16:22:09 167
原创 懒加载Fragment
为什么要使用懒加载比如TabLayout+ViewPager这种模式,普通加载会请求所有页面的数据并绘制,这样对流量,性能都造成一定的浪费。使用懒加载可以优化加载网络数据的时机,做到在需要时加载,不需要时不加载。实现思路由于显示fragment的时候,存在viewpager的预加载机制,且左右相邻的fragment都会回调setUserVisibleHint这个方法,然后我们希望在进行加载数...
2019-11-04 11:15:44 169
原创 Bitmap
1. Bitmap详解Bitmap位图包括像素以及长、宽、颜色等描述信息。长宽和像素位数是用来描述图片的,可以通过这些信息计算出图片的像素占用内存的大小。位图可以理解为一个画架,把图放到上面然后可以对图片做一系列的处理。位图文件图像显示效果好,但是非压缩格式,需要占用较大的存储空间。Config表示图片像素类型ARGB_8888ARGB_4444RGB_565ALPHA_8...
2019-11-04 11:06:22 216
原创 Sevice详解
Service是什么服务是Android中实现程序后台运行的解决方案,他非常适合是去执行那些不需要和用户交互而且还要长期运行的任务。服务的运行不依赖于任何用户界面,即使程序被切换到后台,或者用户打开了另一个应用程序,服务仍然能够保持独立运行。不过需要注意的是,服务并不是运行在一个独立的进程当中,而是依赖于创建服务时所在的应用程序进程。当某个应用程序被杀掉时,所有依赖该进程的服务也会停止运行。...
2019-11-04 08:16:33 1434
原创 android图片滤镜功能实现
float mHue = 0.0f; float mSaturation = 1f; float mLum = 1f; float MID_VALUE; Bitmap oriBitmap,newBitmap; MID_VALUE = barHue.getMax() * 1.0F / 2; oriBitmap = BitmapFactory....
2019-11-01 22:56:38 1000
原创 Retrofit——01.入门
Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装使用步骤添加Retrofit库的依赖:implementation 'com.squareup.retrofit2:retrofit:2.5.0'implementation 'com.squareup.retrofit...
2019-11-01 22:55:06 286
原创 RxJava——3.变换操作符
Map()作用对被观察者发送的每1个事件都通过指定的函数处理,从而变换成另外一种事件应用场景数据类型转换 // 采用RxJava基于事件流的链式操作 Observable.create(new ObservableOnSubscribe<Integer>() { // 1. 被观察者发送事件 = 参数为整型 = 1、2、3 ...
2019-11-01 07:37:37 125
原创 RxJava——2.创建操作符
just()作用:快速创建1个被观察者对象(Observable)发送事件的特点:直接发送传入的事件应用场景快速创建 被观察者对象(Observable) & 发送10个以下事件Observable.just(1,2,3,4).subscribe(new Observer<Integer>() { @Override ...
2019-11-01 07:37:16 129
原创 RxJava——1.入门
定义: RxJava是基于事件流,实现异步操作的库。作用:类似AsyncTask,Handler特点:基于事件流的链式调用,逻辑简介,实现优雅,使用简单RxJava中的4个角色:例如:开灯角色作用类比被观察者(Observable)产生事件开关观察者(Observer)接收事件,并给出响应动作灯订阅(Subscribe)连接...
2019-11-01 07:37:02 127
原创 设计模式——02.Build设计模式
简介Build模式是一步一步创建复杂对象的模式。允许用户在不知道内部构造细节的情况下,可以更精细的控制对象的构造流程。该模式是为了将构建复杂对象的过程和构造它的部件解耦,使得构建的过程和部件的表示隔离开,两者之间的耦合度降到最低。定义将一个复杂对象的构建和它的表示分离,使得同一个构建过程可以创建不同的表示。使用场景相同的方法,不同的执行顺序,产生不同的事件结果。多个部件或零件,都可以...
2019-11-01 07:32:14 193
原创 设计模式——01.单例设计模式
什么是单例设计模式?单例模式是一种常用的软件设计模式,通过单例,保证系统中只有一个对象实例。具体实现将构造方法私有化,使其不能在外部通过new实例化该对象在该类的内部产生一个唯一的实例化类对象,将其封装为private static 类型定义静态方法返回对象1.立即加载/饿汉式public class Singleton { // 将自身实例化对象设置为一个属性,并用...
2019-11-01 07:31:20 122
原创 屏幕适配——02.smallestWidth 限定符适配
原文地址1.屏幕分辨率适配原理屏幕分辨率限定符适配需要在 res 文件夹下创建各种屏幕分辨率对应的 values-xxx 文件夹,然后根据一个基准分辨率,例如基准分辨率为 1280x720,将宽度分成 720 份,取值为 1px~720px,将高度分成 1280 份,取值为 1px~1280px,生成各种分辨率对应的 dimens.xml 文件。假设设计图上的一个控件的宽度为 720px,那...
2019-10-30 22:03:05 285
原创 屏幕适配——01.基本概念
屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米,比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等屏幕分辨率屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素横向像素,如1960* 1080。dpi(屏幕像素密度)屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per ...
2019-10-30 22:01:27 232
原创 CoordinatorLayout使用——layout_scrollFlags参数
layout_scrollFlags参数控制AppBarLayout中控件的行为scroll:Child View 伴随着scrollingView的滚动事件而滚出或滚进屏幕使用说明:当ScrollView将要向下滚动的时候,优先滚动的是自己,当自己滚动到顶部头的时候,再开始触发滚动AppBarLayoout中的childView;当ScrollView将要向上滚动的时候, 优先将A...
2019-10-30 21:58:43 1044
转载 安卓存储——内部存储,外部存储
1. 内部存储内部存储空间是和应用关联的,存储在内部存储中的文件只能被应用访问到。一个应用所创建的文件都在和应用包名相同的目录下,应用被卸载后这些文件也被删除。获取存储的方法获取内部存储的根路径:/dataEnvironment.getDataDirectory().getAbsolutePath()某个应用在内部存储中的files路径: /data/data/com.test.soc...
2019-10-30 21:39:38 673
原创 使用ConstrainLayout进行复杂布局的绘制
关于基本使用在此就不讲了,放几个小案例直接看看怎么使用。需求三张图宽高比为1:1左边图片占总宽度的2份,右边占1份圆头像一半覆盖左边大图<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/container" android:layout_width="mat...
2019-09-09 14:45:45 477
原创 ConstraintLayout使用
概述约束布局,是google推出的用于最大化解决布局嵌套问题,同时减少布局渲染时间,提升性能的布局。与相对布局Relativelayout有些类似,约束布局的原理与相对布局是一样的,都是根据视图与视图之间的相互依赖,相对父级布局的位置来进行布局的。但是比Relativelayout更加的灵活,功能更加强大。入门1. 添加依赖implementation ‘com.android.supp...
2019-07-01 22:22:06 295
原创 Android Studio 从2.3.1升级到3.4.1遇到的问题
1.打包报错处理方式如下图,打开此文件,找到错误的文件,发现在我的布局文件里面使用了id,但是id没有定义所以出错了。2.配置打包apk名字出错AS 2.3.1 版本如下配置没有问题,但是3.4.1报错 buildTypes { release { minifyEnabled false proguardFiles ...
2019-05-21 10:32:28 1144
原创 杀不死的服务
后台服务最近公司有个产品需求,就是要在android设备里面内置app,通过后台命令去控制该设备,并将设备信息定时上传服务端。杀不死的服务在开发做了几次修改,从开始的一天启动设备一条app就停止服务,到现在测试一个星期没有出现问题。show code守护进程&lt;service android:name=".GuardService"...
2018-08-02 19:30:01 1005
原创 Recyclerview局部刷新介绍
介绍Recycerview中局部刷新的几个api功能很简单,一个简单recyclerview界面,测试几个api功能,通过上拉加载更多刷新界面。先测试模拟5条数据,展示简单的5个item界面。下面的代码是执行刷新操作data.get(2).name = "修改的第3条数据";data.get(3).name = "修改的第4条数据";data.get(4).name = "修改
2018-01-26 23:44:44 360
原创 Android安全
对称加密(DES)1.应用场景 1.1 本地数据加密(例如加密android 里SharedPreferences 里面的某些敏感数据)1.2 网络传输:登录接口post 请求参数加密{username=lisi,pwd=oJYa4i9VASRoxVLh75wPCg==}1.3 加密用户登录结果信息并序列化到本地磁盘1.4 网页交互数据加密2.总结 DES 安全度在现代已经不够高
2018-01-17 15:40:56 235
转载 Fragment数据懒加载
Fragment懒加载的使用场景便是在一个ViewPager管理多个Fragment时候,由于ViewPager”出色”的缓存机制会在显示一个Fragment的同时,预先加载好左右相邻两个Fragment的部分资源(会触发相邻Fragment的onCreate生命周期)。所谓的懒加载就是让我们加载数据的操作仅在Fragment可见的时候执行,可以节省不必要的开销。看”懒加载”这个名称挺唬人的,其
2018-01-17 10:38:55 199
转载 RecyclerView滚动到底部监听
public class OnRecyclerViewScrollListener extends RecyclerView.OnScrollListener implements OnBottomListener { public enum LAYOUT_MANAGER_TYPE { LINEAR, GRID, STAGGERED_GRI
2018-01-17 10:13:35 696
原创 自定义View——进度条
先看效果图 在这里先不考虑这个控件的实用性,主要是为了学习组合控件的方法。1.首先要做的是创建布局文件testtest.xmlLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
2018-01-14 13:30:13 557
原创 版本控制——2.svn分支合并
仓库目录结构是branches,tags,trunk。 branches:分支,例如主项目有bug需要修复,这时最好的做法是拉取分支,在分支上处理,处理完成合并到主项目。tags:通常存放里程碑事件代码。比如新版本发布,将项目备份到tags文件夹下。trunk:主干。居于主要地位的那份代码称为主干。1.trunk使用 新建项目保存到trunk目录下。2.tags使用 完成1
2018-01-06 12:18:44 276
原创 版本控制——1.svn冲突处理
模拟开发人员A和B协同开发中的冲突,A,B同时都从仓库拉取最新代码。1.A完成更改提交public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save
2018-01-06 00:02:03 259
原创 fragment + tabhost使用
总结下几种常见的搭建主页面方式,有普通导航栏,中间凸出导航栏1.fragment + tabhostactivity_main<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http
2018-01-04 16:27:00 287
原创 kotlin——03.扩展,泛型
fun test2() { //1.正则 // 如果在java中,使用"."是不能分割的,需要"\\."转义 //Kotlin中split函数,默认不会把传入的参数当做正则表达式 for (s in str.split(".")) { print(s) } // 但是如果要将参数的当
2018-01-01 22:22:30 2333
原创 kotlin入门——01.基础
1.kotlin变量1.var (variable) 可变变量 //a.只声明变量,不赋值 var a: Int var b: String //b. 声明变量同时,赋值 var c: Int = 100; var d: Int d = 100; //变量类型支持自动推断 var e = 1; var f = "hel
2018-01-01 21:20:33 873
原创 支付宝alipaySdk-20170922集成
支付宝支付很简单,但是新的sdk还是有些坑要去踩下才知道。1.省略一些步骤。下载最新sdk。2.调用本地支付方法 zfbPay();方法参数都是后台接口返回,具体参数如下:{ "code": 200, "data": { "acctId": "", "amount": "", "callback": "", //回调地址
2018-01-01 17:11:59 2353
原创 获取listview中每个条目editText输入的内容
1.需求:listview展示商品订单列表,每个订单可以添加留言信息。最后将所有订单留言信息和订单信息提交后台进行结算。 2.实现。// editText设置输入监听childViewHolder.mEtWord.addTextChangedListener(newTextSwitcher(childViewHolder));// 将每个position位置和edittext相关联child
2018-01-01 16:04:03 2185
转载 Android系统字体大小如何影响app的字体大小?
在Android应用开发过程中,一定会碰到本来完美的布局,在系统字体大小设置【最大】时变成一团浆糊。解决办法网上也有很多,但是分析原理的却几乎没看到。博主在碰到问题的第一时间也是直接用了网上的方法,即在BaseActivity中重写getResources方法如下@Override public Resources getResources() { Resources res =
2017-12-01 16:29:54 1032
原创 Map集合
1.map集合 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap:基于红黑树(Red-Black-Tree)的NavigableMap实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法
2017-11-28 16:20:55 239
原创 京东商城分类实现
最近做了商城项目,分类模块是完全仿照京东实现,踩了几个坑记录下。1.一开始想到使用两个Recyclerview实现左边和右边,右边使用recyclerview嵌套gridview实现二级商品展示。实现后发现内容加载缓慢,界面明显卡顿。我们二级内展示的不是分类,而是全部全部商品,数据量大,加载就很慢了。2.解决,通过listview嵌套gridview解决了这个问题,到现在还没有想到为什么这样做就可
2017-11-21 15:55:53 1138
转载 android studio请求网络数据日志显示不全
as控制台对输出日志大小有限制。下面的工具类可以解决该问题public class LogUtil { //可以全局控制是否打印log日志 private static boolean isPrintLog = false; private static int LOG_MAXLENGTH = 2000; public static void v(String msg
2017-10-25 12:00:29 1414
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人