AndRoid开发
文章平均质量分 76
流金岁月5789651
开始,新的一段旅程
展开
-
Android 视图截屏小结
把UI布局转换成图片保存到本地或者分享出去。未测量过UI布局(未显示屏幕上)WebView 截图第一种第二种通过获取当前window的DecorView,然后绘制Bitmap对象。原创 2022-06-27 19:58:57 · 528 阅读 · 0 评论 -
RxJava 知识回顾
一个实现异步操作的库。RxJava 的异步实现,是通过一种扩展的观察者模式来实现的。RXJava GitHubRXAndroid GitHubRxJava观察者模式两个对象观察者与被观察者,其中观察者与被观察者建立了订阅关系,如果被观察者发生了变化那么需要及时通知观察者,观察者收到通知后做出相应的处理.。例子: 顾客去买蛋糕这样一个场景(把顾客和蛋糕店店员分别看做观察者与被观察者),由于蛋糕是现做需要一定时间才能完成,顾客在购买时一般会先付钱给店员拿到一个付款凭证后离开去忙其他事,这样他们.原创 2021-11-30 21:37:46 · 1952 阅读 · 0 评论 -
Android 自定义控件基础:measure过程
measure过程要分为两种情况:如果是原始的View,需要通过measure 方法就完成其测量过程;如果是ViewGroup,除了完成自己的测量过程外,还会遍历去调用所有子元素的measure方法,各个子元素再递归去执行这个流程。ViewRootImplView 的整个绘制流程的启动入口可以从 ViewRootImpl 的 performTraversals 方法开始看。performTraversals 方法调用了performMeasure()方法。// ViewRootImpl 的源码.原创 2021-07-31 10:55:50 · 442 阅读 · 0 评论 -
Android 自定义控件基础:draw过程
draw过程是将View绘制到屏幕上。在这个过程中 View 需要通过操作 Canvas 来实现自己 UI 效果。ViewRootImplView 的 draw 起始点也是从 ViewRootImpl 开始的,ViewRootImpl 的 performDraw 方法最终会调用 drawSoftware 方法,再通过调用 DecorView 的 draw 方法来启动 draw 流程。// ViewRootImpl 类源码private void performTraversals() {.原创 2021-07-18 17:37:16 · 544 阅读 · 2 评论 -
Android 自定义控件基础:layout 过程
layout 过程作用是 ViewGroup用来确定子元素的位置,当ViewGroup的位置被确定后,它在onLayout 中遍历所有的子元素并调用其layout方法,在layout方法中onLayout方法又会被调用。layout方法 确定View 本身的位置,而 onLayout方法 则会确定所有子元素的位置。ViewRootImplView 的 layout 起始点也是从 ViewRootImpl 开始的,ViewRootImpl 的 performLayout 方法会调用 DecorView.原创 2021-06-20 18:26:11 · 688 阅读 · 2 评论 -
笔记:Activity 中 获取View 实际的宽/高
Question在Activity 已启动的时候需要获取某个View 宽/高?Analysis通常操作会在onCreate或者onResume里面去获取这个View的宽/高,但是实际上无法正确获得某个View的宽/高的信息。这是因为View 的measure过程和Activity的生命周期方法不是同步执行的,因此无法保证Activity执行了onCreate、onResume时某个View已经测量完毕了,如果View还没有测量完毕了,那么获得 宽/高就是0.ResolveActivity原创 2021-06-06 18:16:12 · 334 阅读 · 1 评论 -
Android 自定义控件基础:MeasureSpec
前言MeasureSpec 很大程度上决定了一个View尺寸规格,是因为这个过程还受父容器的影响,因为父容器影响View 的MeasureSpec的创建过程。在测量过程中,系统会将View的LayoutParams 根据父容器所施加的规则转换成对应的MeasureSpec,然后再根据这个MeasureSpec测量出View 的最终宽/高。MeasureSpec 构建MeasureSpec 代表了一个32位int值,高2位代表SpecMode(测量模式),低30位代表SpcSize(在某种测量模式下的规原创 2021-02-28 18:50:10 · 246 阅读 · 0 评论 -
Android 动画基础 : 属性动画
前言属性动画是API 11 新加入的特性,和View 动画不同,它对作用对象进行了拓展,属性动画可以对任何对象做动画,甚至可以没有对象。 属性动画可以对任意对象的属性进行动画而不仅仅是View,动画默认时间间隔300ms,默认帧率10ms/帧。其可以达到的效果是:在一个时间间隔内完成对象从一个属性值到另一个属性值的改变。采用开源动画库nineoldandroids 兼容API 11 以前的系统。比较常用的几个动画类是:ValueAnimator、ObjectAnimator、AnimatorSet原创 2021-01-31 10:40:42 · 289 阅读 · 0 评论 -
Android 动画基础:View 动画
## 前言原创 2021-01-16 21:13:30 · 567 阅读 · 0 评论 -
Android WebView屏蔽网页中广告
需求WebView加载的某些网页里面常常有广告,需要把广告去除,可以利用js把对应的广告块进行隐藏。这里效果就是只展示列表内容。效果原始效果屏蔽后效果代码核心JS代码document.querySelector('#siteWrapper > header').style.display="none";WebView 设置隐藏代码写在WebView 的setWebViewClient方法下面onProgressChanged 里面WebViewClient cli原创 2020-08-24 16:29:57 · 2082 阅读 · 1 评论 -
Android View回顾之坐标系
前言Android坐标系其实就是一个三维坐标,Z轴向上,X轴向右,Y轴向下。这三维坐标的点处理就能构成Android丰富的界面或者动画等效果。Android 相对坐标系在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。如下图所示:View 提供获取坐标方法getTop()获取到的是View自身的顶边到其父布局顶边的距离getLeft()获取到的是View自身的左边到其父布局左边的距离getRight()获取到的原创 2020-07-26 19:21:50 · 170 阅读 · 0 评论 -
Android组件之全面解析Service
前言服务(Service)是Android中实现程序后台运行的解决方案,非常适合用于执行那些不需要和用户交互且长期运行的任务。要点依赖于创建服务时所在的应用进程,不是运行在一个独立的进程当中。耗时操作需要在服务内部手动创建子线程,并在这里执行具体任务,否则就有可能会出现主线程被阻塞住的情况。生命周期Service 有三种启动服务的方式:启动服务:startService()开启服务,stopService()关闭服务startService() 回调 onCreate ——&g原创 2020-06-25 17:50:31 · 228 阅读 · 0 评论 -
Android消息机制——Handler分析
前言Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。Handler 是Android 消息机制的上层接口,这使得在开发过程中只需要和Handler交互即可。通过Handler 可以将一个任务切换到Handler所在的线程中去执行。机制组成部分分析Handler机制原理必然涉及ActivityThread,Handler、MessageQueue,Looper,Message等重要类。对这些类作简要介绍:Activ原创 2020-06-19 21:38:41 · 210 阅读 · 0 评论 -
动画之插值器和估值器
概念插值器TimeInterpolator(时间插值器)根据时间流逝的百分比计算出当前属性值改变的百分比LinearInterpolator(线性插值器)用于匀速动画AccelerateDecelerateInterpolator(加速减速插值器)动画两头慢,中间快DecelerateInterpolator(减速插值器)动画越来越慢还有其他系统...原创 2019-09-23 11:40:53 · 345 阅读 · 1 评论 -
Android IPC基础之Binder 机制
IPC概念 :进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程起由 :两个对象能直接相互访问的前提是这两个对象都存在于相同的内存地址空间中,如果两个对象分别存在于两个不同的进程中,那么这两个对象是不能直接相互调用的,需要跨进程通信技术Binder 机制Binder 是Android 中的一个类,它实现了IBinder 接口。Android 开发中,Binder 主要用在Se...原创 2019-08-10 15:41:18 · 141 阅读 · 0 评论 -
开源库之EventBus使用详解
简介 EventBus是一种用于Android的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。常用于Activity、Fragment和后台Service之间通信、传递数据。GitHub地址:https://github.com/greenrobot/EventBusAPI作为一个消息总线主要有三个组成部分:事件(Event)、事件订阅者(Su...原创 2018-09-12 22:46:52 · 549 阅读 · 0 评论 -
APK部署手机上出现闪退现象
在开发项目中,打包并编译的APK,在部分机型上无法正常打开,会出现闪退现象.例如:三星Note3 。我使用AS及API 23进行开发。控制台报错如下: java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.l原创 2017-02-16 17:23:54 · 6232 阅读 · 0 评论 -
解决Android软键盘弹出 布局内指定内容上移实现
公司开发中,遇到多个EditText输入框,android手机上有些机型会出现点击过 EditView 它获得了焦点也弹出了软键盘,但是收回软键盘后,再点击该 EditView 会出现被软键盘遮挡的情况,点其它 EditView 后,再来点该 EditView 又恢复正常不再被遮挡的问题。解决:给想要被顶上去的内容嵌套一个 ScrollView :<ScrollView原创 2017-02-16 18:11:57 · 7243 阅读 · 1 评论 -
WebView与H5那些事儿
一、WebView基本用法1 .通过webView来加载html页面的用法://例如:加载assets文件夹下的test.html页面mWebView.loadUrl("file:///android_asset/test.html")//例如:加载网页mWebView.loadUrl("http://www.baidu.com")注意:一般会在App内部打开网页,否则,会在原创 2017-04-07 16:35:21 · 816 阅读 · 0 评论 -
Android 解决WebView 支持WebGL兼容性问题
在项目开发中,有个需求加载H5页面。H5页面所展示内容是VR、3DMAX技术所呈现动态内容。android系统提供原生webView在有些手机上不支持,比如:魅蓝2、华为mate9。如图所示:后来,经过查阅,发现网上早有解决方案。可以用腾讯X5内核的webview进行解决各种手机不支持webGL兼容性问题。所以就去腾讯X5官网点击打开链接。下载个Demo试了一下,可以解决。但是,使原创 2017-03-31 10:28:27 · 7134 阅读 · 1 评论 -
Android 6.0运行时权限小记
项目开发过程中,碰到6.0系统的手机。然后看了6.0运行时权限的相关资料,总结如下:运行时权限相关API1、常量PackageManager.PERMISSION_DENIED:该权限是被拒绝的。PackageManager.PERMISSION_GRANTED:该权限是被授权的。2、方法ContextCompat.checkSelfPermission原创 2017-04-11 14:32:30 · 377 阅读 · 0 评论 -
史上最全的WebSettings说明
setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(Content Url),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。setAllowFileAccess (boolean allow) 是否允许访问文件,默认允许。注意,这里只是允许或禁止对文件系统的访问,Assets 和 resource转载 2017-05-05 21:53:50 · 2061 阅读 · 0 评论 -
屏幕适配之带虚拟按键手机屏幕适配
最近,在项目开发中遇到带虚拟按键屏幕适配的问题。例如,华为P9、小米MAX等机型,整个屏幕的布局都往上了,觉得应该是虚拟按键的问题。所以,经过一番折腾,找到如下解决方案:获取屏幕实际显示尺寸高度//获取屏幕尺寸,不包括虚拟功能高度getWindowManager().getDefaultDisplay().getHeight(); 获取屏幕原始尺寸原创 2017-05-25 10:43:08 · 2903 阅读 · 1 评论 -
Android与H5相机、相册笔记
公司项目中android内嵌H5页面,H5页面需要选择上传图片功能。H5的标签无法调起android照相机和图库功能,所以只能android进行处理。本人第一次做,借鉴网上诸多的代码,总结如下: 我们用WebView加载H5页面,需要使用WebView上传文件。默认情况下情况下,使用Android的WebView是不能够支持上传文件的。这时,需要webView设置WebChromeC原创 2017-05-08 16:55:01 · 3942 阅读 · 0 评论 -
Android新特性介绍,ConstraintLayout完全解析
转载:http://blog.csdn.net/guolin_blog/article/details/53122387本篇文章的主题是ConstraintLayout。其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。我们都知道,在传统的Android开发当中,界面基本都是靠编写XML代码完成的,转载 2017-06-01 22:04:48 · 269 阅读 · 0 评论 -
NDK开发笔记---CMake构建JNI
从AndroidStudio2.2版本开始,默认使用 CMake 的方式来构建NDK项目,也可以使用 ndk-build 的方式,这里我们主要介绍 CMake 的方式。 首先,介绍 NDK 的下载与安装,在SDK设置那个页面,选择SDK Tools面板,就可以下载NDK。如图所示,需要下载CMake、LLDB、NDK组件:NDK 这套工具集允许您为 An原创 2017-06-24 21:12:24 · 2394 阅读 · 0 评论 -
WebView与H5那些事儿(=)
大家如果有兴趣可以看我的前一篇[WebView与H5那些事儿](http://blog.csdn.net/xufei5789651/article/details/69566985) 。 这次,在项目中遇到的问题:场景一公司一个项目全部用h5做出来,然后使用android 的webview进行展示,心想这工作挺不错的。后来,各种苦逼… 这次遇到h5页面用支付宝遇到问题,上图: 可以看到url原创 2017-07-30 22:25:08 · 1376 阅读 · 0 评论 -
Android 打包混淆问题
项目集成支付宝混淆报错Warning:com.alipay.android.phone.mrpc.core.AndroidHttpClient: can't find referenced method 'org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int,android.net.SSLSessionCache)'原创 2017-08-25 10:18:19 · 365 阅读 · 0 评论 -
Android 微信支付接入笔记
我们在App移动开发中,支付功能基本都会遇到。前几天公司项目中有微信支付的功能,特此记录一下。本文基于AndroidStudio进行开发的。 第1步 阅读官方文档微信官方文档 通过文档,我们要申请微信开发者平台(和微信公众号要区别),对开发者资质进行认证。还有重要一点交费!!!第2步 填写App基本信息,获取APPID填写App信息时候,要注意下面几点:应用包名要保持一致. 要确定填写应用原创 2017-09-13 18:44:57 · 1940 阅读 · 0 评论 -
使用AndroidStudio做项目时出现错误及解决方案
借鉴其他人,自己遇到一些问题原创 2016-05-25 18:58:15 · 1243 阅读 · 0 评论