首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >忍术!猫眼三勾玉

忍术!猫眼三勾玉

作者头像
我不是费圆
发布于 2020-09-22 02:23:54
发布于 2020-09-22 02:23:54
50800
代码可运行
举报
文章被收录于专栏:鲸鱼动画鲸鱼动画
运行总次数:0
代码可运行

如果你觉得我的代码还算有趣,在你的学习中能有所帮助,请查看我的置顶文章,我由衷感谢!  前端的学习不是一蹴而就,不积跬步无以至千里,不积小流无以成江海。持续不断的努力才能让你我有所收获。 效果图:

小眼睛一左一右固定在屏幕上,可调整屏幕宽度以控制二者间距。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>CSS3实现眨眼动画DEMO演示</title>
</head>
<style>
	@charset "utf-8";
	/* CSS Document */
	*{margin:0;padding:0;}
	/*.container{ width:800px; height:200px; margin:30px auto;overflow:hidden; background:#000; position:relative;}*/
	.eyesBoxs{width:130px;height:70px;position:absolute;top:50px;}
	.pullLeft{left:100px;}
	.pullRight{right:100px;}
	.profile{
		width:130px;
		height:70px;
		background:#fff;
		position:absolute;
		top:0;
		left:0;
		overflow:hidden;
		border-radius:0 70px 0 50px;
	}
	.shadow{
		display:block;
		width:130px;
		height:70px;
		position:absolute;
		top:0;
		z-index:5;
		border-radius:0 90px 0 60px;
		box-shadow:5px 12px 2px 5px rgba(0,0,0,.25) inset;
	}
	.skewLeft{
		transform:skewX(15deg);
		-webkit-transform:skewX(15deg);
		-o-transform:skewX(15deg);
	}
	.skewRight{
		transform:skewX(-15deg) scale(-1,1);
		-webkit-transform:skewX(-15deg) scale(-1,1);
		-o-transform:skewX(-15deg) scale(-1,1);
	}
	.basic{
		width:60px;
		height:60px;
		background:#000;
		position:absolute;
		top:50%;
		left:50%;
		z-index:10;
		margin-top:-30px;
		border-radius:60%;
	}
	.basic:before{
		content:"";
		display:block;
		width:10px;
		height:11px;
		position:absolute;
		left:15px;
		top:15px;
		z-index:100;
		border-radius:60%;
		background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.9),rgba(225,225,225,0.3));
		-webkit-background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.9),rgba(225,225,225,0.3));
		-o-background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.9),rgba(225,225,225,0.3));
	}
	.pullLeft .basic{
		margin-left:-33px;
	}
	.pullRight .basic{
		margin-left:-27px;
	}
	.eyes{
		width:55px;
		height:55px;
		background:#ff0000;
		position:absolute;
		top:8px;
		border-radius:60%;
		box-shadow:0 0 2px 4px #bd0000 inset,0 0 0 2px #000;
	}
	.pullLeft .eyes{left:35px;}
	.pullRight .eyes{right:35px;}
	.eyes .line{
		width:64%;
		height:64%;
		background:#ff0000;
		position:absolute;
		right:0;
		left:0;
		top:10px;
		margin:0 auto;
		border-radius:60%;
		box-shadow:0 0 2px 0 #b20000 inset;
	}
	.eyes .line:before{
		content:"";
		display:block;
		width:10px;
		height:11px;
		position:absolute;
		left:3px;
		top:4px;
		z-index:100;
		border-radius:60%;
		background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.7),rgba(225,225,225,0.3));
		-webkit-background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.7),rgba(225,225,225,0.3));
		-o-background-image:radial-gradient(circle,rgb(225,225,225),rgb(225,225,225),rgba(225,225,225,0.7),rgba(225,225,225,0.3));
	}
	.eyes .line:after{
		content:"";
		display:block;
		width:10px;
		height:10px;
		position:absolute;
		background:#000;
		right:0;
		left:-1px;
		top:13px;
		z-index:100;
		margin:0 auto;
		border-radius:60%;
		transform:rotate(150deg);
		-webkit-transform:rotate(150deg);
		-o-transform:rotate(150deg);
		animation:colour 0.5s ease-in 6s;
		-webkit-animation:colour 0.5s ease-in 6s;
		-o-animation:colour 0.5s ease-in 6s;
	}
	@keyframes colour{
		0%{
			background:#000;
		}
		100%{
			background:#f00;
		}
	}
	@-webkit-keyframes colour{
		0%{
			background:#000;
		}
		100%{
			background:#f00;
		}
	}
	@-o-keyframes colour{
		0%{
			background:#000;
		}
		100%{
			background:#f00;
		}
	}
	/*******三勾玉 开始*******/
	.hook{
		width:92%;
		height:92%;
		position:absolute;
		right:0;
		left:0;
		top:5%;
		margin:0 auto;
		border-radius:60%;
	}
	.hook .bar{
		display:block;
		width:100%;
		height:100%;
		position:absolute;
		left:0;
		top:0;
		border-radius:60%;
	}
	.hook .bar b{
		display:block;
		width:8px;
		height:8px;
		background:#000;
		position:absolute;
		left:0;
		bottom:0;
		border-radius:60%;
	}
	.hook .bar b:after{
		content:"";
		width:8px;
		height:8px;
		border-color:transparent transparent #000 transparent;
		border-style:solid;
		border-width:0 0 5px 0;
		position:absolute;
		top:-1px;
		left:-3px;
		z-index:100;
		border-radius:0 0 0 70%;
		transform:rotate(-75deg);
		-webkit-transform:rotate(-75deg);
		-o-transform:rotate(-75deg);
	}
	.hook .bar:nth-child(1){
		transform:rotate(10deg);
		-webkit-transform:rotate(10deg);
		-o-transform:rotate(10deg);
	}
	.hook .bar:nth-child(2){
		transform:rotate(130deg);
		-webkit-transform:rotate(130deg);
		-o-transform:rotate(130deg);
	}
	.hook .bar:nth-child(3){
		transform:rotate(250deg);
		-webkit-transform:rotate(250deg);
		-o-transform:rotate(250deg);
	}
	/*******三勾玉 结束*******/
	/*******万花筒 开始*******/
	.tube{
		width:93%;
		height:93%;
		position:absolute;
		right:0;
		left:0px;
		top:2px;
		margin:0 auto;
		background:#000;
		border-radius:60%;
	}
	.tube .bar{
		display:block;
		width:10px;
		height:20px;
		border-style:solid;
		border-width:0 0 0 10px;
		border-color:transparent transparent transparent black;
		position:absolute;
		border-radius:100% 0 0 0;
	}
	.tube .bar:nth-child(1){
		top:-10px;
		left:2px;
		transform:rotate(-10deg);
	}
	.tube .bar:nth-child(2){
		bottom:0px;
		right:-10px;
		transform:rotate(105deg);
		-webkit-transform:rotate(105deg);
		-o-transform:rotate(105deg);
	}
	.tube .bar:nth-child(3){
		bottom:-3px;
		left:-10px;
		transform:rotate(235deg);
		-webkit-transform:rotate(235deg);
		-o-transform:rotate(235deg);
	}
	/*******万花筒 结束*******/
	/*******轮回眼 开始*******/
	.trans{
		width:130px;
		height:70px;
		position:absolute;
		overflow:hidden;
		top:0;
		left:0;
		border-radius:0 70px 0 50px;
	}
	.trans .bar{
		display:block;
		width:9px;
		height:9px;
		background:#000;
		position:absolute;
		top:50%;
		z-index:2;
		margin:-4px 0 0 -4px;
		border-radius:60%;
	}
	.trans .bar:after{	
		content:"";
		display:block;
		width:11px;
		height:12px;
		position:absolute;
		top:-13px;
		left:-13px;
		z-index:100;
		border-radius:60%;
		background:rgba(250,250,250,.85);
	}
	.pullLeft .trans .bar{
		transform:skewX(-15deg);
		-webkit-transform:skewX(-15deg);
		-o-transform:skewX(-15deg);
	}
	.pullLeft .trans .bar{left:48%;}
	.pullRight .trans .bar{
		transform:skewX(-15deg) scale(-1,1);
		-webkit-transform:skewX(-15deg) scale(-1,1);
		-o-transform:skewX(-15deg) scale(-1,1);
	}
	.pullRight .trans .bar{right:48%;}
	/*******轮回眼 结束*******/
	.ani-narrow{			/*基本眼*/
		animation:ani-narrow 0.5s linear 1s;
		-webkit-animation:ani-narrow 0.5s linear 1s;
		-o-animation:ani-narrow 0.5s linear 1s;
	}
	@keyframes ani-narrow{
		from{
			transform:scale(1);
		}
		to{
			opacity:0;
			transform:scale(0);
		}
	}
	@-webkit-keyframes ani-narrow{
		from{
			-webkit-transform:scale(1);
		}
		to{
			opacity:0;
			-webkit-transform:scale(0);
		}
	}
	@-o-keyframes ani-narrow{
		from{
			-o-transform:scale(1);
		}
		to{
			opacity:0;
			-o-transform:scale(0);
		}
	}
	.ani-zoom{				/*红色眼*/
		animation:ani-zoom 11s linear 0.8s;
		-webkit-animation:ani-zoom 11s linear 0.8s;
		-o-animation:ani-zoom 11s linear 0.8s;
	}
	@keyframes ani-zoom{
		0%{
			opacity:0;
			transform:scale(0);
		}
		6%{
			opacity:1;
			transform:scale(1);
		}
		95%{
			opacity:1;
			transform:scale(1);
		}
		100%{
			opacity:0;
			transform:scale(1.5);
		}
	}
	@-webkit-keyframes ani-zoom{
		0%{
			opacity:0;
			-webkit-transform:scale(0);
		}
		6%{
			opacity:1;
			-webkit-transform:scale(1);
		}
		95%{
			opacity:1;
			-webkit-transform:scale(1);
		}
		100%{
			opacity:0;
			-webkit-transform:scale(1.5);
		}
	}
	@-o-keyframes ani-zoom{
		0%{
			opacity:0;
			-o-transform:scale(0);
		}
		6%{
			opacity:1;
			-o-transform:scale(1);
		}
		95%{
			opacity:1;
			-o-transform:scale(1);
		}
		100%{
			opacity:0;
			-o-transform:scale(1.5);
		}
	}
	.ani-rotateHook{			/*三勾玉*/
		animation:ani-rotateHook 5s ease-in 1.5s;
		-webkit-animation:ani-rotateHook 5s ease-in 1.5s;
		-o-animation:ani-rotateHook 5s ease-in 1.5s;
	}
	@keyframes ani-rotateHook{
		0%{
			opacity:0;
			transform:scale(0) rotate(0);
		}
		90%{
			opacity:1;
			transform:scale(1) rotate(-3240deg);
		}
		100%{
			opacity:0;
			transform:scale(1.4) rotate(-540deg);
		}
	}
	@-webkit-keyframes ani-rotateHook{
		0%{
			opacity:0;
			-webkit-transform:scale(0) rotate(0);
		}
		90%{
			opacity:1;
			-webkit-transform:scale(1) rotate(-3240deg);
		}
		100%{
			opacity:0;
			-webkit-transform:scale(1.4) rotate(-540deg);
		}
	}
	@-o-keyframes ani-rotateHook{
		0%{
			opacity:0;
			-o-transform:scale(0) rotate(0);
		}
		90%{
			opacity:1;
			-o-transform:scale(1) rotate(-3240deg);
		}
		100%{
			opacity:0;
			-o-transform:scale(1.4) rotate(-540deg);
		}
	}
	.ani-rotateTube{			/*万花筒*/
		animation:ani-rotateTube 5s ease-in-out 5.5s;
		-webkit-animation:ani-rotateTube 5s ease-in-out 5.5s;
		-o-animation:ani-rotateTube 5s ease-in-out 5.5s;
	}
	@keyframes ani-rotateTube{
		0%{
			opacity:0;
			transform:scale(0) rotate(0);
		}
		30%{
			opacity:1;
			transform:scale(1) rotate(-360deg);
		}
		100%{
			opacity:1;
			transform:scale(1) rotate(-360deg);
		}
	}
	@-webkit-keyframes ani-rotateTube{
		0%{
			opacity:0;
			-webkit-transform:scale(0) rotate(0);
		}
		30%{
			opacity:1;
			-webkit-transform:scale(1) rotate(-360deg);
		}
		100%{
			opacity:1;
			-webkit-transform:scale(1) rotate(-360deg);
		}
	}
	@-o-keyframes ani-rotateTube{
		0%{
			opacity:0;
			-o-transform:scale(0) rotate(0);
		}
		30%{
			opacity:1;
			-o-transform:scale(1) rotate(-360deg);
		}
		100%{
			opacity:1;
			-o-transform:scale(1) rotate(-360deg);
		}
	}
	.ani-shadow{			/*轮回眼*/
		animation:ani-shadow 1s forwards 10s;
		-webkit-animation:ani-shadow 1s forwards 10s;
		-o-animation:ani-shadow 1s forwards 10s;
	}
	@keyframes ani-shadow{
		0%{
			opacity:0;
			box-shadow:none;
		}
		100%{
			opacity:1;
			box-shadow:0 0 0 14px #464646,0 0 0 16px #000,0 0 0 30px #6c6c6c,0 0 0 32px #000,0 0 0 44px #a6a6a6,0 0 0 46px #000;
		}
	}
	@-webkit-keyframes ani-shadow{
		0%{
			opacity:0;
			box-shadow:none;
		}
		100%{
			opacity:1;
			box-shadow:0 0 0 14px #464646,0 0 0 16px #000,0 0 0 30px #6c6c6c,0 0 0 32px #000,0 0 0 44px #a6a6a6,0 0 0 46px #000;
		}
	}
	@-o-keyframes ani-shadow{
		0%{
			opacity:0;
			box-shadow:none;
		}
		100%{
			opacity:1;
			box-shadow:0 0 0 14px #464646,0 0 0 16px #000,0 0 0 30px #6c6c6c,0 0 0 32px #000,0 0 0 44px #a6a6a6,0 0 0 46px #000;
		}
	}
	.ani-narrow,
	.ani-zoom,
	.ani-rotateHook,
	.ani-rotateTube,
	.ani-shadow,
	.eyes .line:after{
		animation-fill-mode:both;
		-webkit-animation-fill-mode:both;
		-o-animation-fill-mode:both;
	}
</style>
<body>
<div class="container">
	<!--左眼开始-->
    <div class="eyesBoxs pullLeft">
    	<!--轮廓开始-->
		<div class="profile skewLeft"></div>
        <div class="shadow skewLeft"></div>
        <!--轮廓结束-->
        <div class="basic ani-narrow"></div>
        <!--写轮眼开始-->
        <div class="eyes ani-zoom">
            <div class="line">           
                <!--三勾玉-->
                <div class="hook ani-rotateHook">
                	<span class="bar"><b></b></span>
                    <span class="bar"><b></b></span>
                    <span class="bar"><b></b></span>
                </div>
                <!--end-->
                <!--万花筒-->
                <div class="tube ani-rotateTube">
                	<span class="bar"></span>
                	<span class="bar"></span>
                	<span class="bar"></span>
                </div>
                <!--end-->
            </div>
        </div>
    	<!--写轮眼结束-->
        <!--轮回眼开始-->
        <div class="trans skewLeft">
        	<span class="bar ani-shadow"></span>
        </div>
        <!--轮回眼结束-->
    </div>
	<!--左眼结束-->
    
    <!--右眼开始-->
    <div class="eyesBoxs pullRight">
    	<!--轮廓开始-->
		<div class="profile skewRight"></div>
        <div class="shadow skewRight"></div>
        <!--轮廓结束-->
        <div class="basic ani-narrow"></div>
        <!--写轮眼开始-->
        <div class="eyes ani-zoom">
            <div class="line">           
                <!--三勾玉-->
                <div class="hook ani-rotateHook">
                	<span class="bar"><b></b></span>
                    <span class="bar"><b></b></span>
                    <span class="bar"><b></b></span>
                </div>
                <!--end-->
                <!--万花筒-->
                <div class="tube ani-rotateTube">
                	<span class="bar"></span>
                	<span class="bar"></span>
                	<span class="bar"></span>
                </div>
                <!--end-->
            </div>
        </div>
    	<!--写轮眼结束-->
        <!--轮回眼开始-->
        <div class="trans skewRight">
        	<span class="bar ani-shadow"></span>
        </div>
        <!--轮回眼结束-->
    </div>
	<!--右眼结束-->
</div>
</body>
</html>

  代码开源,但需要有一定JS语言基础方可阅读。我明白“ 授人以鱼不如授人以渔 ”的道理,所以代码中常常只留下自定义注释,方便大家修改,但不能凭此参透其中的奥妙,我并没有藏拙,好学的人自然会想办法寻找答案,自学也是人生的一门必修课。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android Binder 机制——AIDL 的使用和原理分析
为了便于理解,这里用一个 Demo 来展示 AIDL 的实现过程:Activity 作为 Client 与作为 Server 端的远程 Service 实现数据交互,在绑定远程 Service 之后,点击 AddUser 后 Service 会将 Client 端传进来的 User 对象加入列表中,点击 GetSize 后远程 Service 将会把列表的长度返回给客户端。建议在继续阅读之前先查看或者运行一下项目源码:
没关系再继续努力
2021/12/01
8110
Android--Binder机制与AIDL
Binder机制核心点就是利用mmap开辟一块空间,使得多个进程可以访问,不仅接收端持有该映射,内核空间也持有,由于相当于内存,所以拷贝只需要一次:从发送端进程的工作内存(用户空间)到主内存(内核空间)的内存映射中,接收端也就相当于接收到了,想要深入理解可以查看Java--深入理解JMM模型、Java并发特性
aruba
2021/12/06
9710
Android--Binder机制与AIDL
AIDL初步理解
如果你是普通app开发,有可能遇不到跨进程访问数据。在车厂,智能座舱开发,跨进程访问数据是很平常的事,比如车机账户系统,很多模块都要获取当前车机账户信息,那账户系统就会提供相应数据给其他模块,账户系统和其他模块不属于同一个进程,这个时候就出现跨进程场景,Android系统为我们提供了一种技术方案:AIDL
笔头
2022/10/30
4280
一步步深入解析AIDL
在 Android 系统中,进程间通信 (IPC) 是一种很重要的机制。IPC 产生的原因是某些情况下需要在两个进程之间进行一些数据的交换。而在深入学习 Android 的过程中难免会遇到 IPC 的相关问题,比如常见的有在自己的应用程序中读取手机联系人的信息,这就涉及到 IPC 了。因为自己的应用程序是一个进程,通讯录也是一个进程,只不过获取通讯录的数据信息是通过 Content Provider 的方式来实现的。
俞其荣
2022/07/28
7040
一步步深入解析AIDL
Android 进阶9:进程通信之 AIDL 解析
张拭心 shixinzhang
2018/01/05
1.2K0
Android 进阶9:进程通信之 AIDL 解析
Android进阶必备:跨进程通讯机制
Binder机制是Android系统提供的跨进程通讯机制,这篇文章开始会从Linux相关的基础概念知识开始介绍,从基础概念知识中引出Binder机制,归纳Binder机制与Linux系统的跨进程机制的优缺点,接着分析Binder的通信模型和原理,而Binder机制最佳体现就是AIDL,所以在后面会分析AIDL的实现原理,最后简单的提下AMS的Binder体系,整篇文章中间会穿插有IBinder、Binder、Parcel的介绍,整篇文章阅读难度不大,不会涉及到framework层的Binder原理,AIDL部分需要有AIDL的使用基础
陈宇明
2020/12/15
7240
Android进阶必备:跨进程通讯机制
【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
右键点击 " aidl " 目录 , 选择 " New / AIDL / AIDL File " 文件 ;
韩曙亮
2023/03/29
1.3K0
【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 )
听说你Binder机制学的不错,来面试下这几个问题(三)
很多文章将Binder框架定义了四个角色:Server,Client,ServiceManager、以及Binder驱动,但这容易将人引导到歧途:好像所有的Binder服务都需要去ServiceManager去注册才能使用,其实不是这样。例如,平时APP开发通过bindService启动的服务,以及有些自己定义的AIDL远程调用,都不一定都ServiceManager注册这条路,个人理解:ServiceManager主要功能是:管理系统服务,比如AMS、WMS、PKMS服务等,而APP通过的bindService启动的Binder服务其实是由SystemServer的ActivityManagerService负责管理。这篇主要关注Android APP Java层Binder通信一些奇葩点:
看书的小蜗牛
2018/06/29
2.1K0
听说你Binder机制学的不错,来面试下这几个问题(三)
Android开发之漫漫长途 IX——彻底掌握Binder
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中的相关知识,另外也借鉴了其他的优质博客,在此向各位大神表示感谢,膜拜!!!另外,本系列文章知识可能需要有一定Android开发基础和项目经验的同学才能更好理解,也就是说该系列文章面向的是Android中高级开发工程师。
LoveWFan
2018/08/07
5750
Android开发之漫漫长途 IX——彻底掌握Binder
【Binder 机制】AIDL 分析 ( 分析 AIDL 文件生成的 Java 源文件 | Binder | IBinder | Stub | Proxy )
在上一篇博客 【Binder 机制】AIDL 分析 ( 创建 AIDL 文件 | 创建 Parcelable 类 | AIDL 中使用 Parcelable 类 | 编译工程生成 AIDL 对应的Java源文件 ) 创建了 AIDL 文件 , 并编译生成了 AIDL 文件对应的 Java 源文件 , 现在开始分析生成在 " AIDL_Demo\app\build\generated\aidl_source_output_dir\debug\out\kim\hsl\aidl_demo " 目录 中的 " IMyAidlInterface.java " 源文件 ;
韩曙亮
2023/03/29
1.9K0
不得不说的Android Binder机制与AIDL
说起Android的进程间通信,想必大家都会不约而同的想起Android中的Binder机制。而提起Binder,想必也有不少同学会想起初学Android时被Binder和AIDL支配的恐惧感。但是作为一个Android开发者,Binder是我们必须掌握的知识。因为它是构架整个Android大厦的钢筋和混凝土,连接了Android各个系统服务和上层应用。只有了解了Binder机制才能更加深入的理解Android开发和Android Framework。这也是为什么无论是《Android开发艺术探索》还是《深入理解Android内核涉及思想》这些进阶类书籍把进程间通信和Binder机制放到靠前章节的原因,它太重要了,重要到整个Android Framework都离不开Binder的身影。
没关系再继续努力
2021/12/28
6380
Android aidl流程简单分析
我们通过写一个从服务端(另外一个进程)获取用户名和密码作为demo来进行源码讲解。
曾大稳
2018/09/11
5660
Android aidl流程简单分析
Java源码阅读绘图规范手册--[捷特版]
工欲善其事必先利其器,磨刀不误砍柴工 最近打算去深读源码,感觉不画图去分析源码根本理不清,也说不清 UML是分析类和类的关系,具体的类内部貌似没有图形机制,没有条件就创造条件呗 借此机会本人自定
张风捷特烈
2019/01/28
7650
Android点将台:金科玉律[-AIDL-]
张风捷特烈
2024/02/08
1500
Android点将台:金科玉律[-AIDL-]
【漫画技术】Android跨进程通信
Tips:4个环节,共计约9小时的精心打磨完成上线,同时也非常感谢参与审稿的同学。
用户2802329
2018/08/07
3080
【漫画技术】Android跨进程通信
源码分析——从AIDL的使用开始理解Binder进程间通信的流程
Binder通信是 Android 系统架构的基础。本文尝试从 AIDL 的使用开始理解系统的 Binder通信。
阳仔
2019/07/31
9880
源码分析——从AIDL的使用开始理解Binder进程间通信的流程
AIDL源码解析in、out和inout
为什么会想写这篇文章,只因为一个error idl.exe E 4928 5836 type_namespace.cpp:130] 'Book' can be an out type, so you must declare it as in, out or inout. 看过上一篇文章Android:IPC之AIDL的学习和总结的同学都知道这是因为在AIDL文件中使用非常规类型作为参数传递的时候没有标记指向tag,那么到底为什么会是这样子的呢,作为一个好奇宝宝我想好好看看。
静默加载
2020/05/29
2K0
【Binder 机制】AIDL 分析 ( AIDL 通信完整流程梳理 )
AIDL 文件 IMyAidlInterface.aidl 在客户端和服务端都有 , 编译时 , 都会在 " build\generated\aidl_source_output_dir\debug\out\kim\hsl\aidl_demo " 目录生成 IMyAidlInterface.java 源文件 ;
韩曙亮
2023/03/29
1.5K0
架构·微服务架构·ANDROID 源码分析(二)
上一篇的文章架构·微服务架构详细描述微服务架构相关的理论基础,为这一篇文章打好了理论基础。这篇文章将站在 Android Framework 设计者的角度上,剖析在 Android 中应用的微服务架构。
幺鹿
2018/08/21
7260
架构·微服务架构·ANDROID 源码分析(二)
Android AIDL跨进程通信
aidl跨进程通信的步骤: 1、创建aidl文件。 2、build后生成aidl对应的java文件。 3、创建服务端Service。 4、创建客户端Activity,bindService(),获取IBinder的proxy 。
用户9854323
2022/10/04
6600
Android AIDL跨进程通信
相关推荐
Android Binder 机制——AIDL 的使用和原理分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验