下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android控件怎么实现直播App点赞飘心动画
运行效果/upload/information/20200623/125/123834.gif一、具体实现流程“爱心”的出现动画private
AnimatorSet
generateEnterAnimation(View
target)
{
ObjectAnimator
alpha
=
ObjectAnimator.ofFloat(target,
"alpha",
0.2f,
1f);
ObjectAnimator
scaleX
=
ObjectAnimator.ofFloat(target,
"scaleX",
0.5f,
1f);
ObjectAnimator
scaleY
=
ObjectAnimator.ofFloat(target,
"scaleY",
0.5f,
1f);
AnimatorSet
enterAnimation
=
new
AnimatorSet();
enterAnimation.playTogether(alpha,
scaleX,
scaleY);
enterAnimation.setDuration(150);
enterAnimation.setTarget(target);
return
enterAnimation;
}“爱心“的上浮轨迹动画private
ValueAnimator
generateCurveAnimation(View
target)
{
CurveEvaluator
evaluator
=
new
CurveEvaluator(generateCTRLPointF(1),
generateCTRLPointF(2));
ValueAnimator
valueAnimator
=
ValueAnimator.ofObject(evaluator,
new
PointF((mViewWidth
-
mPicWidth)
/
2,
mViewHeight
-
mChildViewHeight
-
mPicHeight),
new
PointF((mViewWidth)
/
2
+
(mRandom.nextBoolean()
?
1
:
-1)
*
mRandom.nextInt(100),
0));
valueAnimator.setDuration(3000);
valueAnimator.addUpdateListener(new
CurveUpdateLister(target));
valueAnimator.setTarget(target);
return
valueAnimator;
}/upload/information/20200623/125/123835.jpgprivate
class
CurveEvaluator
implements
TypeEvaluator<PointF>
{
//
由于这里使用的是三阶的贝塞儿曲线,
所以我们要定义两个控制点
private
PointF
ctrlPointF1;
private
PointF
ctrlPointF2;
public
CurveEvaluator(PointF
ctrlPointF1,
PointF
ctrlPointF2)
{
this.ctrlPointF1
=
ctrlPointF1;
this.ctrlPointF2
=
ctrlPointF2;
}
@Override
public
PointF
evaluate(float
fraction,
PointF
startValue,
PointF
endValue)
{
//
这里运用了三阶贝塞儿曲线的公式,参照上面公式
float
leftTime
=
1.0f
-
fraction;
PointF
resultPointF
=
new
PointF();
//
三阶贝塞儿曲线
resultPointF.x
=
(float)
Math.pow(leftTime,
3)
*
startValue.x
+
3
*
(float)
Math.pow(leftTime,
2)
*
fraction
*
ctrlPointF1.x
+
3
*
leftTime
*
(float)
Math.pow(fraction,
2)
*
ctrlPointF2.x
+
(float)
Math.pow(fraction,
3)
*
endValue.x;
resultPointF.y
=
(float)
Math.pow(leftTime,
3)
*
startValue.y
+
3
*
(float)
Math.pow(leftTime,
2)
*
fraction
*
ctrlPointF1.y
+
3
*
leftTime
*
fraction
*
fraction
*
ctrlPointF2.y
+
(float)
Math.pow(fraction,
3)
*
endValue.y;
//
二阶贝塞儿曲线,具体公式请上网查阅
//
resultPointF.x
=
(float)
Math.pow(leftTime,
2)
*
startValue.x
+
2
*
fraction
*
leftTime
*
ctrlPointF1.x
//
+
((float)
Math.pow(fraction,
2))
*
endValue.x;
//
resultPointF.y
=
(float)
Math.pow(leftTime,
2)
*
startValue.y
+
2
*
fraction
*
leftTime
*
ctrlPointF1.y
//
+
((float)
Math.pow(fraction,
2))
*
endValue.y;
return
resultPointF;
}
}二、使用操作<com.anenn.flowlikeviewlib.FlowLikeView
android:id="@+id/flowLikeView"
android:layout_width="75dp"
android:layout_height="200dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="@android:color/transparent"
android:includeFontPadding="false"
android:onClick="addLi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 林地承包合同范本
- 2025年外研版八年级地理下册月考试卷含答案
- 2025年中图版七年级生物上册阶段测试试卷含答案
- 2025年牛津上海版七年级生物上册月考试卷含答案
- 2025年统编版选择性必修3化学上册月考试卷含答案
- 2025年湘教版九年级历史上册阶段测试试卷含答案
- 2025年华东师大版拓展型课程化学下册阶段测试试卷含答案
- 2025年木材加工企业安全生产责任保险合同范本4篇
- 二零二五版明星代言合同违约责任及处理协议3篇
- 二零二五年度店面升级改造与智能安防系统集成合同4篇
- 雾化吸入疗法合理用药专家共识(2024版)解读
- 2021年全国高考物理真题试卷及解析(全国已卷)
- 拆迁评估机构选定方案
- 趣味知识问答100道
- 钢管竖向承载力表
- 2024年新北师大版八年级上册物理全册教学课件(新版教材)
- 人教版数学四年级下册核心素养目标全册教学设计
- JJG 692-2010无创自动测量血压计
- 三年级下册口算天天100题(A4打印版)
- 徐州市2023-2024学年八年级上学期期末地理试卷(含答案解析)
- CSSD职业暴露与防护
评论
0/150
提交评论