
本文主要给大家介绍的是关于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>
绘制雷达波纹
<@R_12_3419@ 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></@R_12_3419@>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。
总结以上是内存溢出为你收集整理的Android仿微信雷达扫描效果的实现方法全部内容,希望文章能够帮你解决Android仿微信雷达扫描效果的实现方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)