360手机卫士—扫描杀雷达效果[通俗易懂]

360手机卫士—扫描杀雷达效果

大家好,又见面了,我是全栈君。

360手机卫士---扫描杀雷达效果[通俗易懂]

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <!-- 背景是雷达图片 -->
        <FrameLayout
            android:layout_width="80dp"
            android:layout_height="match_parent" 
            android:background="@drawable/ic_scanner_malware">
            <ImageView
                android:id="@+id/iv_main_scan"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:src="@drawable/act_scanning_03" />
        </FrameLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:orientation="vertical" 
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/tv_main_scan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="杀毒引擎待命..." />

            <ProgressBar
                android:id="@+id/pb_main_scan"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" 
                
                android:progressDrawable="<span style="color:#ff0000;">@drawable/my_progress</span>"/>
            	<!--  progressDrawable : 指定进度背景和进度图片-->
        </LinearLayout>

    </LinearLayout>

</LinearLayout>

my_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
   
   <!-- 指定进度条的背景图片 -->
    <item android:id="@android:id/background"
        android:drawable="@drawable/security_progress_bg"></item>

    <!-- 指定进度条的进度图片 -->
    <item android:id="@android:id/progress"
        android:drawable="@drawable/security_progress"></item>
</layer-list>

MainActivity.java

package com.atguigu.l10_app;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private ImageView iv_main_scan;
	private TextView tv_main_scan;
	private ProgressBar pb_main_scan;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 旋转的图片
		iv_main_scan = (ImageView) findViewById(R.id.iv_main_scan);
		// 字体提示
		tv_main_scan = (TextView) findViewById(R.id.tv_main_scan);
		// 进度条
		pb_main_scan = (ProgressBar) findViewById(R.id.pb_main_scan);

		// 启动扫描动画
		startScanAnimation();

		// 開始扫描应用
		startScan();
	}

	/**
	 * 启动分线程扫描应用
	 */
	private void startScan() {
		new AsyncTask<Void, Void, Void>() {
			// 更新进度条之前先进行友好提示
			@Override
			protected void onPreExecute() {
				tv_main_scan.setText("開始扫描杀毒!");
			}

			@Override
			protected Void doInBackground(Void... params) {
				int appCount = 100;
				for (int i = 0; i < appCount; i++) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					// 通知更新进度条
					publishProgress();
				}
				return null;
			}

			// 同步进度的显示
			protected void onProgressUpdate(Void[] values) {
				pb_main_scan.incrementProgressBy(1);
			}

			// 清除动画效果
			protected void onPostExecute(Void result) {
				tv_main_scan.setText("没有病毒, 请放心使用!");
				Toast.makeText(MainActivity.this, "扫描完毕, 没有发现病毒!", 0).show();
				// 停止扫描动画
				iv_main_scan.clearAnimation();
			}
		}.execute();
	}

	/**
	 * 启动扫描动画
	 */
	private void startScanAnimation() {
		RotateAnimation animation = new RotateAnimation(0f, 360f,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
				0.5f);
		animation.setDuration(1000);
		animation.setRepeatCount(Animation.INFINITE);// 不限定反复次数
		// 旋转的图片启动动画效果
		iv_main_scan.startAnimation(animation);
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115350.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 倒立摆matlab仿真程序_倒立摆状态空间建模

    倒立摆matlab仿真程序_倒立摆状态空间建模Matlab程序设计上交作业要求1纸质文档设计分析报告一份包括系统建模、系统分析、系统设计思路、程序及其执行结果。2Matlab程序按班级统一上交后备查。题目一考虑如图所示的倒立摆系统。图中倒立摆安装在一个小车上。这里仅考虑倒立摆在图面内运动的二维问题。图倒立摆系统假定倒立摆系统的参数如下。摆杆的质量m=0.1g摆杆的长度2l=1m小车的质量M=1kg重力加速度g=10…

  • 逻辑回归

    逻辑回归

    2021年11月28日
  • Xmind快捷键笔记

    Xmind快捷键笔记

  • odrive入门教程(securecrt使用教程串口)

    ODrive官方入门指南中,采用的是USB连接控制模式(中文翻译版本链接)使用的是NativeProtocol。当我们需要尝试串口通信实现时,需要专程ASCII协议来进行串口通信实现相关的命令,结合着入门指南以及ODrive中的相关属性方法参数,将流程中用到的相关方法整理如下:importserialimporttimeted=serial.Serial(port=’/dev/tty.wchusbserial1470′,baudrate=115200)ted.writ

  • HTTP.SYS远程代码执行漏洞(CVE-2015-1635,MS15-034)

    HTTP.SYS远程代码执行漏洞(CVE-2015-1635,MS15-034)漏洞描述及渗透过程HTTP协议堆栈(HTTP.sys)中存在一个远程执行代码漏洞,该漏洞是在HTTP.sys不正确地分析特制HTTP请求时引起的。漏洞危害攻击者只需要发送恶意的http请求数据包,就可能远程读取IIS服务器的内存数据,或使服务器系统蓝屏崩溃。修复建议1)微软官方已经给出修复补丁(KB3042553),用户安装修复补丁即可。变通办法,禁用IIS内核缓存(可能降低IIS…

  • Linux安装tomcat,配置环境变量

    Linux安装tomcat,配置环境变量一、安装tomcat需要先配置jdk,所以没有配置jdk同学,先移步Linux安装JDK二、卸载tomcat检查linux是否安装tomcatrpm-qa|greptomcat查看下系统信息,确认是32位还是64位:uname-a输入rpm-qa|greptomcat如果有通过rpm-e`rpm-qa|greptomcat`(或rpm-e加上面rpm…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号