栏目: Android

Android应用程序窗口(Activity)与WindowManagerService服务的连接过程分析

在前两文中,我们分析了Activity组件的窗口对象和视图对象的创建过程。Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态...

2021-06-17 67 0 0 阅读全文

Android Studio做超好玩的拼图游戏 附送详细注释源码

一、项目概述之前有不少粉丝私信我说,能不能用Android原生的语言开发一款在手机上运行的游戏呢?说实话,使用java语言直接开发游戏这个需求有点难,因为一些比较复杂的游戏都是通过cocos2D或者Unity3D等游戏引擎开发出来的,然后再移植到Android手机当中,使用完整的游戏引擎开发的过程比...

2021-08-20 111 0 0 阅读全文

Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析

通过前面几篇文章的学习,我们知道了在Android系统中,无论是普通的Activity窗口,还是特殊的输入法窗口和壁纸窗口,它们都是被WindowManagerService服务组织在一个窗口堆栈中的,其中,Z轴位置较大的窗口排列在Z轴位置较小的窗口的上面。有了这个窗口堆栈之后,WindowMana...

2021-06-17 216 0 0 阅读全文

Android应用程序键盘(Keyboard)消息处理机制分析

在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的;在上一篇文章《Android应用程序消息处理机制(Looper、Handler)分析》中,我们分析了Android应用程序...

2021-06-17 81 0 0 阅读全文

Android WebView支持Input File启用相机/选取照片功能

webview要调起input-file拍照或者选取文件功能,可以在webview.setWebChromeClient方法中重写指定的方法,来拦截webview的input事件,并做我们相应的操作。Android代码webView.setWebChromeClient(newWebChromeCl...

2021-04-25 84 0 0 阅读全文

Android应用程序窗口(Activity)的测量(Measure)、布局(Layout)和绘制(Draw)过程分析

在前面一篇文章中,我们分析了Android应用程序窗口的绘图表面的创建过程。Android应用程序窗口的绘图表面在创建完成之后,我们就可以从上到下地绘制它里面的各个视图了,即各个UI元素了。不过在绘制这些UI元素之前,我们还需要从上到下地测量它们实际所需要的大小,以及对它们的位置进行合适的安排,即对...

2021-06-17 86 0 0 阅读全文

Android绘制钟表的方法

1、仪表盘,画圆outCirclePaint=newPaint();outCirclePaint.setStrokeWidth(2);outCirclePaint.setAntiAlias(true);outCirclePaint.setStyle(Paint.Style.STROKE);canva...

2021-05-17 119 0 0 阅读全文

Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划

前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务。有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger服务的实现原理了。SurfaceFlinger服务负责管理系统的帧缓冲区设备,并且负责渲染系统的UI...

2021-06-17 68 0 0 阅读全文

Android监听器实例代码

代码分享:importandroidx.appcompat.app.AppCompatActivity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.widget....

2021-05-06 82 0 0 阅读全文

详解Flutter点击空白隐藏键盘的全局做法

开发原生页面的时候,在处理键盘事件上,通常的需求是,点击输入框外屏幕,要隐藏键盘,同样的,这样的需求也需要在Flutter上实现,Android上的实现方式是在基类Activity里实现事件分发,判断触摸位置是否在输入框内。/***获取点击事件*/@CallSuper@Overridepublicb...

2021-04-12 140 0 0 阅读全文

Android应用程序窗口(Activity)的绘图表面(Surface)的创建过程分析

在前文中,我们分析了应用程序窗口连接到WindowManagerService服务的过程。在这个过程中,WindowManagerService服务会为应用程序窗口创建过一个到SurfaceFlinger服务的连接。有了这个连接之后,WindowManagerService服务就可以为应用程序窗口创...

2021-06-17 57 0 0 阅读全文

Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析

在Android系统中,Activity窗口的大小是由WindowManagerService服务来计算的。WindowManagerService服务会根据屏幕及其装饰区的大小来决定Activity窗口的大小。一个Activity窗口只有知道自己的大小之后,才能对它里面的UI元素进行测量、布局以及...

2021-06-17 70 0 0 阅读全文

Android 官推 Kotlin-First 的图片加载库—Coil的使用入门

Coil是一个非常年轻的图片加载库,在2020年10月22日才发布了1.0.0版本,但却受到了Android官方的推广,在AndroidDevelopersBackstage这个博客中专门聊过一期。推广的原因比较简单:一方面是这个库确实做得很好,另一方面是这个库完全是用Kotlin写的,而且运用了大...

2021-04-07 132 0 0 阅读全文

Flutter 使用Cached_Image_Network优化图片加载体验

在App中会经常遇到需要从后台拉取图片的场景,这一方面会给服务器带来网络带宽消耗,另一方面加载图片的等待过程也会影响用户体验。因此,往往会在App端对图片做缓存机制,以避免同一张图片反复发起请求。在Flutter中,cached_image_network即提供了缓存网络图片功能,同时还提供了丰富的...

2021-05-28 92 0 0 阅读全文

Android应用程序窗口(Activity)实现框架简要介绍和学习计划

前面我们学习了SurfaceFlinger服务的实现原理。有了这个基础之后,从本文开始,我们就可以分析Android系统在Java层的UI实现了。我们知道,在Android应用程序的四大组件中,只有Activity组件与UI相关,它描述的是应用程序窗口,因此,我们就通过它的UI实现来分析Androi...

2021-06-17 82 0 0 阅读全文

Kotlin学习教程之函数的默认参数

​在Java中,为函数的参数添加默认值是不被允许的,这是为了防止默认参数与函数重载同时使用时二义性的问题,考虑下面的例子:voidfunc(p1:String,p2:String,p3:String="default"){//dosomething}voidfunc(String...

2021-04-14 91 0 0 阅读全文

Android自定义View实现九宫格图形解锁(Kotlin版)

效果:代码:packagecom.example.kotlin_testimportandroid.content.Contextimportandroid.graphics.Canvasimportandroid.graphics.Colorimportandroid.graphics.Paint...

2021-09-10 41 0 0 阅读全文

Android 资源混淆的方案及注意事项

资源混淆有助于减小包体积,也可以提高被反编译后阅读代码的难度。还可以应对一些安全检测机构对于资源混淆要求。基于微信的Android资源混淆工具,实现资源混淆。​原理Android的资源类型是很多的,比如说drawable,string,layout等,aapt在打包时,会将这些资源的名称,id和位置...

2021-05-28 91 0 0 阅读全文

Flutter进阶—实现动画效果(三)

在上一篇文章:Flutter进阶—实现动画效果(二)的最后,我们实现了一个控件,其中包含各种布局和状态处理控件。以及使用自定义的动画感知绘图代码绘制单个Bar的控件。还有一个浮动按钮控件,用于启动条形图高度的动画变化。现在开始向我们的单个条形添加颜色,在Bar类的height字段下添加一个color...

2021-06-19 83 0 0 阅读全文

Android实现布局全屏

本文实例为大家分享了Android实现布局全屏的具体代码,供大家参考,具体内容如下类似Launcher,希望占用的布局铺满全屏,以调整状态栏及虚拟按键部分的颜色样式。废话不多说,上案例:一、效果预览二、案例实现1.新建Android工程2.styles样式增加values目录的styles.xml添...

2021-05-08 86 0 0 阅读全文