- 博客(70)
- 收藏
- 关注
原创 SnapHelper解析
简介SnapHelper是RecyclerView的辅助类,可用来控制在滑动结束后,RecyclerView中item的对齐方式。SnapHelper是一个抽象类,系统内置了两个默认实现类LinearSnapHelper:使当前Item居中显示,常用场景是横向的RecyclerView, 类似ViewPager效果,但是又可以快速滑动(滑动多页)PagerSnapHelper:PagerSnapHelper的展示效果和LineSnapHelper是一样的,只是PagerSnapHelper 限制一次只能滑动
2022-06-30 18:04:37
1184
原创 View/ViewGroup的绘制流程
View的绘制流程是从ViewRoot的performTraversals开始的,它经过measure,layout,draw三个过程最终将View绘制出来。performTraversals会依次调用performMeasure,performLayout,performDraw三个方法,他们会依次调用measure,layout,draw方法,然后又调用了onMeasure,onLayout,dispatchDrawmeasure:对于自定义的单一view的测量,只需要根据父 view 传递..
2020-12-21 13:30:04
667
原创 View的事件体系
View的事件体系View 的绘制流程:1.View 的工作流程主要是指 measure、layout、draw 这三大流程,即测量、布局和绘制,其中 measure 确定 View 的测量宽/高,layout 确定 View 的最终宽/高和四个顶点的位置,而 draw 则将 View绘制到屏幕上2.View 的绘制过程遵循如下几步:绘制背景background.draw(canvas)绘制自己(onDraw)绘制 children(dispatchDraw)绘制...
2020-12-16 14:58:02
257
原创 Activity详解
四大组件之Activity简述:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity 就处于运行状态生命周期:onCreate()->onStart()->onResume()->onPause()->onStop()->o...
2020-12-16 14:22:40
1788
原创 Android消息机制及源码分析
Android消息机制Android 的消息机制主要是指Handler得运行机制1.以Handler的sendMessage方法为例,当发送一个消息后,会将此消息加入消息队列MessageQueue中。2.Looper负责去遍历消息队列并且将队列中的消息分发给对应的Handler进行处理。3.在Handler的handleMessage方法中处理该消息,这就完成了一个消息的发送和处理过程。参与消息处理有四个对象,它们分别是 Handler, Message, MessageQueue,Loo.
2020-12-16 13:44:39
161
原创 Binder是什么?
Binder是什么?从IPC角度来说定义:Binder是Android中的一种跨进程通信方式,该通信方式在linux中没有,是Android独有作用:在Android中实现跨进程通信从Android Driver层定义:Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder备注:驱动层位于Linux内核中,它提供了最底层的数据传递,对象标识,线程管理,调用过程控制等功能。驱动层是整个Binder机制的核心从Android Native层定义:Bind
2020-12-16 11:47:10
1240
原创 AndroidStudio创建implementation 依赖 配置
在Project的gradle下添加如下信息:buildscript { dependencies { ... classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' ... }在Moudle的library 的gradle 添加如下信息:apply plugin: 'c...
2019-08-27 16:53:01
1153
1
原创 SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 git push github失败
在github项目在本地的根目录下打开git命令行git config --global --unset http.proxy
2019-08-27 16:50:27
1132
原创 解决oppo、vivo手机从相册选择图片获取图片地址问题
打开相册 if (position == 0) {//打开相册 Intent intent = new Intent(); intent.addCategory(Intent.CATEGORY_OPENABLE); ...
2019-01-17 19:12:05
5439
2
原创 Android之跑马灯失焦停止问题
要TextView 实现跑马灯效果的话,我们只需要关注5个属性即可第一个是要单行显示第二个是单行显示多余部分如何显示,即 ellipsize 属性的设置第三个是获取焦点第四个是走马灯重复次数第五个是强制的获得了焦点,让 View 响应所有的 touch 事件<TextView android:padding="10dp" android:background=...
2019-01-02 10:07:30
2250
原创 flutter的导入包提示target of uri doesnt exist
dart 的sdk版本小在cmd下面升级flutter upgrade,成功.之后重新打开android studio.
2018-08-07 16:48:53
3163
原创 Android Studio 代码没有颜色区分
Android Studio打开之后文件代码没有颜色 输入没了提示解决方法: 点击File之后打开页面最下面有一个Power Sava Mode看看是不是打钩了如果打钩了取消重新编译就有了...
2018-07-23 16:56:48
6510
原创 git push代码的时候 出现 Push to origin/master was rejected 的错误提示
在git项目对应的目录位置打开Git Bash 然后在命令窗输入下面命令: git pull origin master --allow-unrelated-histories 最后出现完成信息,则操作成功! 再次Push代码,可以成功进行提交!...
2018-07-23 16:52:36
287
原创 解决调用系统相机android.os.FileUriExposedException:file:///storage/emulated/0/
在application的onCreate()调用StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();StrictMode.setVmPolicy(builder.build());builder.detectFileUriExposure()
2018-07-11 13:18:26
7727
原创 Android 实现人脸检测
添加权限 逻辑实现import android.Manifest;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Context;import android.content.pm.PackageManager;import android.
2018-01-26 11:21:32
1994
原创 Material Design-FloatingActionButton和Snackbar
添加依赖 compile 'com.android.support:design:25.3.1'FloatingActionButton简介:FloatingActionButton从本质讲就是一个ImageView,从FloatingActionButton的继承来看,它首先继承了ImageButton,然后是ImageButton继承了ImageView。所以FloatingActionBu
2018-01-19 10:27:40
287
原创 Material Design-CardView实现卡片式效果
简介:Material Design中有一种很个性的设计概念:卡片式设计(Cards),Cards拥有自己独特的UI特征,在v7包中引进了一种全新的控件CardView,用来实现这种 Cards UI 的设计.CardView继承自FrameLayout,它是一个带圆角背景和阴影的FrameLayout.添加依赖compile 'com.android.support:cardview-v7:25
2018-01-19 09:56:03
1081
原创 Android多线程-Thread的理解和使用
一、Thread的定义线程,可以看作是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。1.1 Thread主要函数 1.run():线程运行时所执行的代码 2.start():启动线程 3.sleep()/sleep(long millis):线程休眠,进入阻塞状态,sleep方法不会释放锁 (其它线程不会进入synchronized方法体或方法块,不释放锁
2018-01-18 17:16:24
1386
原创 Activity管理栈工具类-ActivityManager
Activity 的四种启动模式和特点standard ( 标准模式 ) : 每次启动都会创建一个新的实例,并放入栈顶。(无法使用非 Activity 类的 Context 启动该模式的 Activity,如果启动需要加上 FlAG_ACTIVITY_NEW_TASK标记创建一个栈)。singleTop ( 栈顶复用模式 ) : 如果启动的 Activity 在栈顶,则该 Activity 不会重
2018-01-18 16:43:00
787
原创 EvenBus3.0的基本使用
简介:EventBus是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。优势:- 简单而强大:EventBus是一个非常容易学习的API的小型库。尽管如此,您的
2018-01-17 22:08:59
339
原创 MaterialDesign-沉浸式设计兼容封装
状态栏1. 5.0+ API5.0+自动实现了沉浸式效果,状态栏的颜色跟随你的主题里面的colorPrimaryDark属性。 (1)通过设置主题达到 @color/mytextcolor@color/colorPrimary_pink@color/colorPrimary_pinkDark@color/background -->#906292
2018-01-14 17:53:31
316
原创 Materialdesign-recyclerview简单封装
添加依赖compile ‘com.android.support:recyclerview-v7:23.2.1’ adapter封装import java.util.List;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.View.
2018-01-13 22:07:07
233
原创 RxJava操作符详解-变换操作符
1. 作用对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列2. 类型RxJava中常见的变换操作符: Map()、FlatMap、ConcatMap()、Buffer()3. 应用场景 & 对应操作符 介绍注:在使用RxJava 2操作符前,记得在项目的Gradle中添加依赖:
2018-01-13 11:56:15
274
原创 MaterialDesign控制项目全局样式
MaterialDesign是从Android5.0开始引入的,是一种全新的设计语言(翻译为“原材料设计”),其实是谷歌提倡的一种设计风格、理念、原则。拟物设计和扁平化设计一种结合体验。还吸取了最新一些科技理念,我们可以参与原型设计、辅助美工原型设计的素材准备。开发实现MD的设计----界面、动画、转场动画等等。定义自己的全局样式: <!--
2018-01-08 10:52:07
714
原创 RxJava操作符详解-创建操作符
1. 作用创建 被观察者( Observable) 对象 & 发送事件。2. 类型创建操作符分类基本创建: create()快速创建&发送事件: just()、formArray()、fromIterable()、never()、empty()、error()延迟创建: defer()、timer()、interval()、intervalRan
2018-01-08 10:25:00
326
原创 自定义封装SpannableString工具类
工具类采用了建造者模式,可以用链式调用说明:getBuilder : 获取建造者setFlag : 设置标识setForegroundColor: 设置前景色setBackgroundColor: 设置背景色setQuoteColor : 设置引用线的颜色setLeadingMargin : 设置缩进setBullet :
2018-01-08 09:35:29
1050
原创 Android 5.0以下出现 java.lang.NoClassDefFoundError:
解决方法:一、配置build.gradle (app)android { compileSdkVersion 23 buildToolsVersion "24.0.1"defaultConfig { minSdkVersion 15 targetSdkVersion 22 // Enabling multidex support. 开关
2017-08-17 16:26:12
393
原创 Android6.0 权限申请无法开启悬浮窗权限,无权限开启悬浮窗解决方案
在AndroidManifest.xml中添加悬浮窗的权限 <!--悬浮窗--> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2017-04-01 12:03:10
3620
原创 java.lang.UnsatisfiedLinkError 解决方法
错误日志java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file “/data/data/com.xiaoyigou.xiaoyigou/files/instant-run/dex/slice-support
2017-04-01 09:38:55
1260
原创 android4.3以下的Android版本 字符串转JsonArray出错
错误信息:Android NoSuchMethodError org.json.JSONArray.原因: 这个是API 19之后更新出来的 所以4.3及以下版本都会出现这个错误解决方法:使用第三方的json包进行转换。
2017-03-18 12:02:35
622
原创 使用Dialog自定义点击图片查看图片大图
布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">
2017-02-16 15:34:15
3595
原创 Spinner 设置默认值
在使用这个方法的时候必须对数组进行排序Arrays.sort(数组); //使用java的默认排序方法spinner.setSelection(Arrays.binarySearch(数组, 要设置的默认值), true);
2016-12-22 14:47:42
1698
原创 adb无法运行项目到手机 无法安装应用
异常 DELETE_FAILED_INTERNAL_ERRORError while Installing APK解决方法: 被手机的安全管家拦截了,安全管家里面有个usb安装管理,拒绝列表,把这个功能给关了
2016-11-24 16:26:48
1169
原创 FloatMath.sqrt 方法找不到 不支持 解决办法
FloatMath.sqrt()Error:(95, 30) 错误: 找不到符号符号: 方法 sqrt(float)位置: 类 FloatMath解决办法:改为 (float)Math.sqrt()
2016-11-24 15:16:03
19040
2
原创 Activity横竖屏设置
Activity全屏设置 方式1:AndroidManifest.xml<activity Android:name="myAcitivty" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />方式2:代码实现requestWindowFeature(Window.FEATURE_NO_TITLE); // 隐藏标
2016-11-18 17:14:22
1106
原创 Android横竖屏切换
private boolean mIsVideoSizeKnown = false; private int mVideoWidth; private int mVideoHeight; private int mSurfaceViewWidth; private int mSurfaceViewHeight; public void onVideoSizeC
2016-11-18 15:41:42
302
原创 androidstudio adb 端口号 被占用
异常如下: Unable to create Debug Bridge: Unable to start adb server: error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)could not read ok fr
2016-11-18 15:37:46
1280
原创 AndroidStudio运行编译是PNG格式图片不通过
在gradle文件里面添加如下配置 aaptOptions.cruncherEnabled = falseaaptOptions.useNewCruncher = false
2016-11-09 09:54:49
1689
原创 多功能弹框
import Android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListen
2016-11-04 10:01:45
305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人