为了账号安全,请及时绑定邮箱和手机立即绑定

悬浮窗能实现自定Animation动画效果吗?

悬浮窗能实现自定Animation动画效果吗?

SMILET 2019-04-04 11:07:04
悬浮窗能实现自定Animation动画效果吗
查看完整描述

4 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

  • 目前找到的方法只能调用内建的动画效果

  • params = new WindowManager.LayoutParams();

  • params.windowAnimations = android.R.style.Animation_Translucent;

  • 若改成R.style.custon_anim的话则是怎麼样都没有动画


  • 可用的方法是直接搭Handler、Runnable来updateViewLayout

  • 但是在改物件大小时会看起来不顺畅

  • 仅管已经把呼叫时间改为1ms,一样没辨法每毫秒呼叫一次更新


  • 现在是先用Runnable的方法,只做了淡出效果、物件直接放大到固定值

  • 代码大致上如下


  • private void createFloatView(){

  • Log.d("HuybnTag","S.createFloatView");

  • btn_exif = new Button(getApplicationContext());

  • btn_exif.setBackgroundResource(R.drawable.exif);

  • wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);


  • exif = new WindowManager.LayoutParams();

  • exif.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;

  • exif.format = PixelFormat.RGBA_8888;

  • exif.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

  • | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

  • exif.height = 124;

  • exif.width = 124;

  • exif.gravity = Gravity.CENTER;

  • exif.windowAnimations = android.R.style.Animation_Translucent;

  • .......


  • 要离开时运行这个

  • fadeOut(btn_exif,exif);

  • //下面这段改自网络上的代码

  • public void fadeOut(final View notificationView, final LayoutParams params){

  • animTime=300;

  • exif.width=310;

  • exif.height=310;

  • final long startTime = System.currentTimeMillis();

  • Handler handler = new Handler();

  • handler.postDelayed(new Runnable(){

  • public void run(){

  • fadeOutHandler(notificationView, params, startTime);

  • }

  • }, 25);

  • }

  • public void fadeOutHandler(final View notificationView, final LayoutParams params, final long startTime){

  • long timeNow = System.currentTimeMillis();

  • float alpha = (1- ((float)(timeNow - startTime)/animTime) ) * 1.0f;

  • if(alpha<=0) alpha = 0;

  • params.alpha = alpha;

  • Log.d("HuybnTag","alpha= "+alpha);

  • wm.updateViewLayout(notificationView, params);

  • if (timeNow-startTime<animTime){

  • Handler handler = new Handler();

  • handler.postDelayed(new Runnable(){

  • public void run(){

  • fadeOutHandler(notificationView, params, startTime);

  • }

  • }, 25);

  • }



查看完整回答
反对 回复 2019-04-09
?
呼唤远方

TA贡献1856条经验 获得超11个赞

正是丰富的运算符和表达式使C语言功能十分完善。这也是C语言的主要特点之一。C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。

查看完整回答
反对 回复 2019-04-09
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

css3样式中的transform、animation都可以实现动画的相关效果。例如:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>animation动画效果</title>
<style>
div
{
width:100px;
height:100px;
background:red;
animation:myfirst 5s;
-webkit-animation:myfirst 5s; /* Safari and Chrome */
}

@keyframes myfirst
{
from {background:red;}
to {background:yellow;}
}

@-webkit-keyframes myfirst /* Safari and Chrome */
{
from {background:red;}
to {background:yellow;}
}
</style>
</head>
<body>

<p><b>注意:</b> 该实例在 Internet Explorer 9 及更早 IE 版本是无效的。</p>

<div></div>

</body>
</html>



查看完整回答
反对 回复 2019-04-09
  • 4 回答
  • 0 关注
  • 1910 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信