当前位置: 移动技术网 > 移动技术>移动开发>Android > Android仿微信雷达扫描效果的实现方法

Android仿微信雷达扫描效果的实现方法

2019年07月24日  | 移动技术网移动技术  | 我要评论

本文主要给大家介绍的是关于android实现微信雷达扫描效果的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

废话不多说 先上图(用as录制的 转换工具不是很好 所以看得效果不是很好)

效果图


示例代码

activity 代码

public class shapedrawableactivity extends appcompatactivity {
 private imageview ivlightbeam;

 private objectanimator radarscananim; // 扫描动画

 private int width;
 private int height;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);

  setcontentview(r.layout.activity_shape_drawable);
  ivlightbeam = (imageview) findviewbyid(r.id.ivlightbeam);
 }


 @override
 protected void onresume() {
  super.onresume();
  startscan();
 }

 @override
 public void onwindowfocuschanged(boolean hasfocus) {
  super.onwindowfocuschanged(hasfocus);
  if (height == 0 || width == 0) {   //获取屏幕长、宽
   width = screenutils.getscreenwidth(this);
   height = screenutils.getscreenheight(this);   //根据屏幕长、宽计算扫描圆的直径
   int diameter = (int) math.sqrt(math.pow(height, 2) + math.pow(width, 2));   //修改光束的大小,使光束可以扫描到整个屏幕
   framelayout.layoutparams layoutparams = new framelayout.layoutparams(diameter, diameter);
   ivlightbeam.setlayoutparams(layoutparams);   //将扫描光束的中心移至屏幕内容中心
   int offsetx = (width - diameter) / 2;
   int offsety = (height - diameter) / 2 + screenutils.getstatusheight(this) / 2;
   ivlightbeam.setx(offsetx);
   ivlightbeam.sety(offsety);
  }
 }

 @override
 protected void onpause() {
  super.onpause();
  stopscan();
 } // 开始扫描

 private void startscan() {
  radarscananim = objectanimator.offloat(ivlightbeam, "rotation", 0f, 360f);
  radarscananim.setduration(2000); //2秒扫描一圈
  radarscananim.setinterpolator(new linearinterpolator());
  radarscananim.setrepeatcount(objectanimator.infinite);//循环扫描

  ivlightbeam.setvisibility(view.visible);
  radarscananim.start();
 } // 停止扫描

 private void stopscan() {
  ivlightbeam.setvisibility(view.gone);
  radarscananim.end();
 }
}

activity 布局文件

<framelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#fa000000"
 android:cliptopadding="false"
 android:fitssystemwindows="true">

 <imageview
  android:id="@+id/ivwave"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="5dp"
  android:src="@drawable/wave" />

 <imageview
  android:id="@+id/ivlightbeam"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:src="@drawable/light_beam" />

</framelayout>

绘制扫描光束

<shape
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="oval">

 <size
  android:width="500dp"
  android:height="500dp" />

 <gradient
  android:endcolor="#aaaaaaaa"
  android:startcolor="#00000000"
  android:type="sweep"
  />
</shape>

绘制雷达波纹

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item>
  <!--最外层圆圈-->
  <shape android:shape="oval">
   <solid android:color="#10ffffff" />
   <size
    android:width="600dp"
    android:height="600dp" />
   <stroke
    android:color="#10b8b8b8"
    android:dashwidth="1dp" />
  </shape>
 </item>

 <item
  android:bottom="100dp"
  android:left="100dp"
  android:right="100dp"
  android:top="100dp">
  <!--最中间层圆圈-->
  <shape android:shape="oval">
   <solid android:color="#1cffffff" />
   <stroke
    android:color="#1cb8b8b8"
    android:dashwidth="1dp" />
  </shape>
 </item>

 <item
  android:bottom="200dp"
  android:left="200dp"
  android:right="200dp"
  android:top="200dp">

  <!--最中心圆圈-->
  <shape android:shape="oval">
   <solid android:color="#2cffffff" />
   <stroke
    android:color="#2cb8b8b8"
    android:dashwidth="1dp" />
  </shape>
 </item>
</layer-list>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网