Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

04-11 1434阅读

final Function onSingleTap;

final Widget child;

@override

_TikTokVideoGestureState createState() => _TikTokVideoGestureState();

}

class _TikTokVideoGestureState extends State {

GlobalKey _key = GlobalKey();

// 内部转换坐标点

Offset _p(Offset p) {

RenderBox getBox = _key.currentContext.findRenderObject();

return getBox.globalToLocal§;

}

List icons = [];

bool canAddFavorite = false;

bool justAddFavorite = false;

Timer timer;

@override

Widget build(BuildContext context) {

var iconStack = Stack(

children: icons

.map(

§ => TikTokFavoriteAnimationIcon(

key: Key(p.toString()),

position: p,

onAnimationComplete: () {

icons.remove§;

},

),

)

.toList(),

);

return GestureDetector(

key: _key,

onTapDown: (detail) {

setState(() {

if (canAddFavorite) {

print(‘添加爱心,当前爱心数量:${icons.length}’);

icons.add(_p(detail.globalPosition));

widget.onAddFavorite?.call();

justAddFavorite = true;

} else {

justAddFavorite = false;

}

});

},

onTapUp: (detail) {

timer?.cancel();

var delay = canAddFavorite ? 1200 : 600;

timer = Timer(Duration(milliseconds: delay), () {

canAddFavorite = false;

timer = null;

if (!justAddFavorite) {

widget.onSingleTap?.call();

}

});

canAddFavorite = true;

},

onTapCancel: () {

print(‘onTapCancel’);

},

child: Stack(

children: [

widget.child,

iconStack,

],

),

);

}

}

class TikTokFavoriteAnimationIcon extends StatefulWidget {

final Offset position;

final double size;

final Function onAnimationComplete;

const TikTokFavoriteAnimationIcon({

Key key,

this.onAnimationComplete,

this.position,

this.size: 100,

}) : super(key: key);

@override

_TikTokFavoriteAnimationIconState createState() =>

_TikTokFavoriteAnimationIconState();

}

class _TikTokFavoriteAnimationIconState

extends State with TickerProviderStateMixin {

AnimationController _animationController;

@override

void dispose() {

_animationController?.dispose();

super.dispose();

}

@override

void didChangeDependencies() {

print(‘didChangeDependencies’);

super.didChangeDependencies();

}

@override

void initState() {

_animationController = AnimationController(

lowerBound: 0,

upperBound: 1,

duration: Duration(milliseconds: 1600),

vsync: this,

);

_animationController.addListener(() {

setState(() {});

});

startAnimation();

super.initState();

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

重要知识点

下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

高级进阶篇——高级UI,自定义View(部分展示)

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

  • 面试题部分合集

    Flutter组件:仿抖音双击点赞弹出爱心效果,安卓工程师跳槽经验分享

    外链图片转存中…(img-h5l3PkEN-1711650720904)]

    高级进阶篇——高级UI,自定义View(部分展示)

    UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

    [外链图片转存中…(img-qqQb0QsR-1711650720905)]

    • 面试题部分合集

      [外链图片转存中…(img-7ikxRaBl-1711650720905)]

      本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]