雷达扫描

转载请注明出入:http://blog.csdn.net/forwardyzk/article/details/42640031

模拟扫描文件的效果,模拟雷达扫描。

思路:

1.使用旋转动画和渐变动画的结合。

2.使用线程和Handler进行消息的传递,刷新界面

不要在主线程上做耗时操作,不要在主线程上刷新界面。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="120dip"
        android:orientation="horizontal" >

        <FrameLayout
            android:layout_width="120dip"
            android:layout_height="120dip" >

            <ImageView
                android:layout_width="80dip"
                android:layout_height="80dip"
                android:layout_gravity="center"
                android:src="@drawable/act_radar_bg" />

            <ImageView
                android:id="@+id/im_scan"
                android:layout_width="65dip"
                android:layout_height="65dip"
                android:layout_gravity="center"
                android:src="@drawable/act_radar_scanning_03" />

            <ImageView
                android:id="@+id/im_dian"
                android:layout_width="65dip"
                android:layout_height="65dip"
                android:layout_gravity="center"
                android:src="@drawable/act_radar_dian_03" />
        </FrameLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tv_lodingApk"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:text="正在扫描:XXX.Apk"
                android:textSize="12sp" />

            <ProgressBar
                android:id="@+id/pb_loding"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dip"
                android:layout_marginRight="15dip"
                android:progressDrawable="@drawable/progress_horizontal" />
        </LinearLayout>
    </LinearLayout>

    <TextView
        android:id="@+id/tv_count"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="已经扫描了XX文件" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:id="@+id/ll_scanText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="文件" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

MainActivity.java

初始化动画

animation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF,
				0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		animation.setDuration(2000);
		animation.setRepeatCount(Animation.INFINITE);

		animation2 = new AlphaAnimation(0.0f, 1.0f);
		animation2.setDuration(3000);
		animation2.setRepeatCount(Animation.INFINITE);
		im_scan.startAnimation(animation);
		im_dian.startAnimation(animation2);

开启线程

thread = new Thread() {
			public void run() {
				pb_loding.setMax(200);
				for (count = 1; count <= pb_loding.getMax(); count++) {
					Message msg = Message.obtain();
					msg.what = SCAN_LODING;
					handler.sendMessage(msg);
					pb_loding.setProgress(count);
					SystemClock.sleep(200);
				}
				Message msg = Message.obtain();
				msg.what = FINSH_SCAN;
				handler.sendMessage(msg);
			};
		};
		thread.start();

刷新界面

private Handler handler = new Handler() {
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case SCAN_LODING:
				TextView tv = new TextView(MainActivity.this);
				tv.setTextSize(14);
				tv_count.setText("已扫描:" + count + "个文件");
				tv_lodingApk.setText("正在扫描:第" + count + "个文件");
				if (count - 1 != 0)
					tv.setText("第" + (count - 1) + "个文件已经扫描");
				ll_scanText.addView(tv, 0);
				break;
			case FINSH_SCAN:
				tv_lodingApk.setText("扫描完毕");
				TextView tv1 = new TextView(MainActivity.this);
				tv1.setTextSize(14);
				tv1.setText("第" + count + "个文件已经扫描");
				ll_scanText.addView(tv1, 0);
				im_scan.clearAnimation();// 清除此ImageView身上的动画
				im_dian.clearAnimation();// 清除此ImageView身上的动画
				break;
			}
		};
	};

源码下载: http://download.csdn.net/detail/forwardyzk/8352683

效果图:

时间: 2024-11-21 05:47:51

雷达扫描的相关文章

【canvas系列】canvas实现&quot;雷达扫描&quot;效果

今天来讲解"雷达扫描"效果demo,来源于QQ群里边有群友说想要个雷达效果,就尝试写了一下. 效果图: demo链接: https://win7killer.github.io/can_demo/demo/radar.html ******************************************************************** 这个东西,背景圆,坐标.圆圈都很简单实现,arc结合moveTo.lineTo就可以解决,背景色也不是问题,一句带过. 那么

Android例子源码模仿安卓微信、云播雷达扫描动画效果

本项目是一个模仿Android微信.云播雷达扫描动画效果的小例子,点击中间的黑色圆圈开始扫描动画,再次点击复位,需要这种效果的朋友可以自己下载看一下,因为是动画效果所以截的静态图有点变形,项目编译版本4.4.2默认编码GBK 源码包下载地址以及运行截图. [点击这里]

html 类似雷达扫描效果 及 闪屏效果

//雷达扫描效果 1 <em id="Radar" class="RadarFast"></em> 2 3 css: 4 .RadarFast{ 5 position: absolute; 6 z-index: 10; 7 bottom: 140px; 8 left: 50%; 9 margin-left: -3px; 10 } 11 .RadarFast:after{ 12 content: ''; 13 position: absolut

cesium 雷达扫描(附源码下载)

前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内容概览 1.基于cesium 实现雷达扫描2.源代码 demo 下载 本篇实现 cesium 雷达扫描功能,效果图如下: 实现思路:核心引用 cesium PostProcessStage类 核心代码 /* 添加雷达扫描线 地形遮挡开启 lon:-74.01296152309055 lat:40.7

雷达扫描控件----------WinForm控件开发系列

/// <summary> /// 雷达扫描控件 /// </summary> [ToolboxItem(true)] [DefaultProperty("Items")] [Description("雷达扫描控件")] public partial class RadarExt : Control { #region private Color areaColor = Color.LawnGreen; /// <summary>

使用c++的OpenGL制作动态三维的雷达扫描效果

感谢参考原文-http://bjbsair.com/2020-04-01/tech-info/18506.html vc++ OpenGL制作动态三维的雷达扫描效果,一个在VC++下应用OpenGL技术绘制三维动画的好范例,虽然这个例子挺简单,但可以为你以后使用VC++6.0编写大型的3D图像处理软件 .3D游戏开发打下基础吧. 项目源代码: 部分代码: 程序执截图: 原文地址:https://blog.51cto.com/14744108/2484193

TWaver动画之雷达扫描效果

UI和功能是好的产品的两个重要因素,很多产品往往只注重功能上的设计,而忽略了UI.在这个“看脸”的时代,就算产品的功能很强大,如果UI跟不上步伐,你的产品都会在客户心中大打折扣.做安全和监控的项目中经常会进行扫描,一般会用一个gif图片来表示软件正在进行扫描,但是如果想更换这个图标的样式,就需要美工重新做图.TWaver提供了动画效果,如果对图标的动画样式不满意,可以通过简单的更改程序来实现,避免了美工的二次返工,提高了效率.切入正题,看我们怎么实现一个动画的雷达扫描图,首先注册一个图片,用HT

雷达扫描动画

#import "ViewController.h" #import "RadarView.h" @interface ViewController () @property (nonatomic, strong) RadarView *radarView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor

poj1328雷达设置 贪心

Radar Installation Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only