扫描病毒的开门动画

<LinearLayout
            android:id="@+id/antivirus_ll_progress"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center"
            >
            <!-- arc_progress : 当前进度 -->
            <com.github.lzyzsd.circleprogress.ArcProgress
                android:id="@+id/antivirus_ap_progress"
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:background="#429ED6"
                custom:arc_bottom_text="扫描中"
                custom:arc_progress="25"
                custom:arc_stroke_width="10dp"
                custom:arc_text_color="#FFFFFF"
                custom:arc_bottom_text_size="14sp"
                />
             <TextView
                android:id="@+id/antivirus_tv_packagename"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="com.android.mms"
                android:textColor="#FFFFFF"
                android:textSize="16sp" />
        </LinearLayout>
//1.获取进度条的布局的图片       LinearLayout mLLProgress = (LinearLayout) findViewById(R.id.antivirus_ll_progress);//包裹progress的父布局

mLLProgress.setDrawingCacheEnabled(true);//设置是否可以绘制图片
            mLLProgress.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);//设置绘制的图片的质量
            Bitmap drawingCache = mLLProgress.getDrawingCache();//获取进度条的图片
            //2.拆分进度条的布局的图片,并存放到两个imageView,本质:根据原图绘制两张图片
            Bitmap leftBitmap = getLeftBitmap(drawingCache);
            Bitmap rightBitmap = getRightBitmap(drawingCache);
            //需要将绘制的新的图片设置给两个imageView,准备执行动画
            mLeft.setImageBitmap(leftBitmap);
            mRight.setImageBitmap(rightBitmap);
            //执行动画操作
            startAnimaition();
public void startAnimaition() {
        //左右两边图片:平移+渐变
        //mLeft.setTranslationX(translationX)
        //mLeft.setAlpha(alpha)
        //重新扫描:渐变的效果
        //参数1:执行动画的控件
        //参数2:执行动画的名称
        //参数3:执行动画的所需的值
        ObjectAnimator animator1 = ObjectAnimator.ofFloat(mLeft, "translationX", 0,-width);
        ObjectAnimator animator2 = ObjectAnimator.ofFloat(mLeft, "alpha", 1.0f,0.0f);

        ObjectAnimator animator3 = ObjectAnimator.ofFloat(mRight, "translationX", 0,width);
        ObjectAnimator animator4 = ObjectAnimator.ofFloat(mRight, "alpha", 1.0f,0.0f);

        ObjectAnimator animator5 = ObjectAnimator.ofFloat(mLLAgain, "alpha", 0.0f,1.0f);

        //动画是一起执行的,所以需要使用组合动画实现
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(animator1,animator2,animator3,animator4,animator5);//设置多个属性动画一起执行
        animatorSet.setDuration(1000);//动画的持续事件

        //执行动画
        animatorSet.start();
    }
private void backAnimaition() {
        //左右两边:平移效果:跟开门动画相反,渐变效果:由透明到不透明
        //重新扫描布局:不透明到透明
        ObjectAnimator animator1 = ObjectAnimator.ofFloat(mLeft, "translationX", -width,0);
        ObjectAnimator animator2 = ObjectAnimator.ofFloat(mLeft, "alpha", 0.0f,1.0f);

        ObjectAnimator animator3 = ObjectAnimator.ofFloat(mRight, "translationX", width,0);
        ObjectAnimator animator4 = ObjectAnimator.ofFloat(mRight, "alpha", 0.0f,1.0f);

        ObjectAnimator animator5 = ObjectAnimator.ofFloat(mLLAgain, "alpha", 1.0f,0.0f);

        //动画是一起执行的,所以需要使用组合动画实现
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(animator1,animator2,animator3,animator4,animator5);//设置多个属性动画一起执行
        animatorSet.setDuration(1000);//动画的持续时间

        //动画执行完成,才会开始重新扫描操作
        //需要给动画设置监听
        animatorSet.addListener(new AnimatorListener() {

            @Override
            public void onAnimationStart(Animator animation) {
                // TODO Auto-generated method stub
             }
            @Override
            public void onAnimationRepeat(Animator animation) {
                // TODO Auto-generated method stub
            }
            @Override
            public void onAnimationEnd(Animator animation) {
                //重新扫描操作
                initData();
            }
            //取消动画执行的操作
            @Override
            public void onAnimationCancel(Animator animation) {
                // TODO Auto-generated method stub
            }
        });
         //执行动画
        animatorSet.start();
        //animatorSet.cancel();//取消动画
    }
public Bitmap getLeftBitmap(Bitmap drawingCache) {
        //1.设置新的图片的宽高
        width = drawingCache.getWidth() / 2;
        int height = drawingCache.getHeight();
        //2.设置新的图片的保存的载体
        //config : 图片的属性设置信息,因为新的图片是根据进度条布局的图片进行绘制的,所以配置属性的信息也要保持一致
        Bitmap createBitmap = Bitmap.createBitmap(width, height, drawingCache.getConfig());
        //3.绘制图片
        //bitmap : 设置绘制的图片保存的地方
        Canvas canvas = new Canvas(createBitmap);
        Matrix matrix = new Matrix();
        Paint paint = new Paint();
        //bitmap : 原图
        //matrix : 矩阵
        //paint : 画笔
        canvas.drawBitmap(drawingCache, matrix, paint);
        return createBitmap;
    }

    public Bitmap getRightBitmap(Bitmap drawingCache) {
        //1.设置新的图片的宽高
        int width = drawingCache.getWidth() / 2;
        int height = drawingCache.getHeight();
        //2.设置新的图片的保存的载体
        //config : 图片的属性设置信息,因为新的图片是根据进度条布局的图片进行绘制的,所以配置属性的信息也要保持一致
        Bitmap createBitmap = Bitmap.createBitmap(width, height, drawingCache.getConfig());
        //3.绘制图片
        //bitmap : 设置绘制的图片保存的地方
        Canvas canvas = new Canvas(createBitmap);
        Matrix matrix = new Matrix();

        matrix.postTranslate(-width, 0);//将画布移动x和y的距离
         Paint paint = new Paint();
        //bitmap : 原图
        //matrix : 矩阵
        //paint : 画笔
        canvas.drawBitmap(drawingCache, matrix, paint);
        return createBitmap;
    }
时间: 2024-10-10 04:55:08

扫描病毒的开门动画的相关文章

CSS3实现开门动画

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0"> <title></title> <style&

linux安装fprot扫描病毒

cd / 如果没有nfs8205,则 yum install -y nfs-utils mkdir nfs8205 mount -t nfs 172.31.8.205:/nfs8205 /nfs8205/  ##挂载 vi /etc/fstab 172.31.8.205:/nfs8205    /nfs8205        nfs     defaults 0 0  ##开机自动挂载 如果有nfs8205,没有fprot,则cd / mkdir -m 777 fprot cp /nfs8205

我的手机管家(10)病毒扫描 拷贝病毒数据库

我的手机管家(10)病毒扫描    拷贝病毒数据库 (1)将病毒数据库复制到asserts文件夹下,然后复制到 "data/data/com.chb.myphonesafe/files/antivirus.db" //数据库路径必须是data/data目录下,否则无法访问 拷贝:AssetUtil package com.chb.myphonesave.util; import java.io.File; import java.io.FileOutputStream; import

360病毒扫描蓝屏报错nvmini.sys

处理扫描病毒会蓝屏重启 ,蓝屏报nvmini.sys 错误   这个病毒叫克邻大盗病毒,该病毒症状是计算机连接网络或者双击运行某个可执行文件后蓝屏,显示nvmini.sys及相关错误代码,如果你勾选了启动和故障恢复中的自动重新启动选项,计算机会自动重启.解决办法: 启动计算机后按"f8"进入安全模式 进入"我的电脑"找到以下文件夹:C:/Windows/System32/drivers 在该文件夹里存在一个名为"nvmini.sys"的文件,找到

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

TWaver MONO Design 中动画的导出与播放

使用过MONO编辑器的朋友都应该了解MONO中支持一些动画的设置,比如开门,开窗,弹出设备,旋转场景,镜头巡航等.但如何将这些动画应用到自己的场景中呢?比如我们在编辑器中给机柜定义了动画,怎样让做好的机柜模型加载到自己的场景中并能播放动画呢?别急,我们来举个例子给大家讲解一下. 首先我们使用编辑器建一个机柜的模型,这里就不给大家演示了,MONO编辑器的平台上提供了多种机柜的模型,我们直接下载一个模型导出一份json可以了,这里我们直接拿了MONO中公开的"42U标准机柜"的数据并导出了

Unity3D游戏开发之基于Trigger的触发式动画设计

相信大家在安装完Unity3D后做的第一件事情一定是浏览官方的示例项目<愤怒的机器人>,这个游戏在场景渲染及光照阴影特效等方面都有不错的表现.那么不知道大家还记不记得这样一个场景,当玩家操控我们的游戏角色--机器人时,当机器人靠近游戏场景中的门时,门会自动打开,而当机器人离开门时,门会自动关闭.那么,我们今天就来一起实现这样一个简单的功能.通过题目大家一定知道了这个功能的实现是基于Trigger的.Trigger在Unity3D中称为触发器,当一个碰撞器勾选了isTrigger选项后,即变成了

【转】Android手机客户端关于二维码扫描的源码--不错

原文网址:https://github.com/SkillCollege/QrCodeScan QrCodeScan 这是Android手机客户端关于二维码扫描的源码,使用了高效的ZBar解码库,并修复了中文乱码. 融合了ZXing代码(使用其中的相机管理功能). 一. 使用开源ZXing扫描的缺点 1.原始代码是横屏模式,尽管可以改成竖屏,但是扫描界面的自定义和多屏幕适配不好做 2.有效扫描区域不好控制,可能是我自己技术不成熟,没找到好方法 3.ZXing是Java写的,对二维码的解析效率没有

clamav查杀病毒

如果你在使用Centos,也可以通过运行 yum install clamav clamav-freshclam 来安装,或者Fedora: sudo yum install clamav clamav-updates .由于Clam是十分轻量级的,下载和安装软件包应该不会花太多时间. 升级病毒库 [[email protected] ~]# freshclam 扫描病毒 clamscan -r / # 不仅会显示找到的病毒,正常的扫描文件也会显示出来clamscan --no-summary