Android UI开发第十五篇——分享一个登录缓冲界面

简介:

今天在网上发现了一个很漂亮的缓冲界面,在这里分享一下。主要还是用的android Anim。


 
 
  1. public class Main extends Activity {  
  2.     private Animation anm;  
  3.     private int marginsTop;  
  4.     public List<ImageView> images;  
  5.     public LinearLayout ll;  
  6.     @Override 
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.  
  10.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  11.  
  12.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  13.  
  14.         DisplayMetrics dm = this.getResources().getDisplayMetrics();  
  15.  
  16.         int height = dm.heightPixels;  
  17.         marginsTop = height - 100;  
  18.         anm = AnimationUtils.loadAnimation(this, R.anim.myanim);  
  19.         ll = new LinearLayout(this);  
  20.         ll.setBackgroundResource(R.drawable.background);  
  21.  
  22.         images = new ArrayList<ImageView>();  
  23.         initImage(ll);  
  24.         playAnimation();  
  25.         setContentView(ll);  
  26.     }  
  27.     private void playAnimation(){         
  28.             new Thread(){  
  29.                 @Override 
  30.                 public void run()  
  31.                 {  
  32.                     try {  
  33.                         Thread.sleep(1000);  
  34.                     } catch (InterruptedException e) {  
  35.                         e.printStackTrace();  
  36.                     }  
  37.                     int runcount=0;  
  38.                     while(true)  
  39.                     {  
  40.                         if(runcount<2)  
  41.                         {  
  42.                             for(int i=0;i<=6;i++)  
  43.                             {  
  44.                                 handler.sendEmptyMessage(i);  
  45.                                 try {  
  46.                                     Thread.sleep(400);  
  47.                                 } catch (InterruptedException e) {  
  48.                                     e.printStackTrace();  
  49.                                 }  
  50.                             }  
  51.                             runcount++;  
  52.                         }else 
  53.                         {  
  54.                             handler.sendEmptyMessage(99);  
  55.                             runcount=0;  
  56.                         }  
  57.                           
  58.  
  59.                     }  
  60.  
  61.                 }  
  62.  
  63.             }.start();  
  64.         }  
  65.           
  66.  
  67.     Handler handler=new Handler(){  
  68.  
  69.                 @Override 
  70.                 public void handleMessage(Message msg) {                  
  71.                     switch(msg.what)  
  72.                     {  
  73.                     case 0:  
  74.                         images.get(0).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.l));  
  75.                         images.get(0).startAnimation(anm);  
  76.                           
  77.                         break;  
  78.                     case 1:  
  79.                         images.get(1).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.o));  
  80.                         images.get(1).startAnimation(anm);  
  81.                         break;  
  82.                     case 2:  
  83.                         images.get(2).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.a));  
  84.                         images.get(2).startAnimation(anm);  
  85.                         break;  
  86.                     case 3:  
  87.                         images.get(3).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.d));  
  88.                         images.get(3).startAnimation(anm);  
  89.                         break;  
  90.                     case 4:  
  91.                         images.get(4).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.i));  
  92.                         images.get(4).startAnimation(anm);  
  93.                         break;  
  94.                     case 5:  
  95.                         images.get(5).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.n));  
  96.                         images.get(5).setAnimation(anm);  
  97.                         break;  
  98.                     case 6:  
  99.                         images.get(6).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.g));  
  100.                         images.get(6).setAnimation(anm);  
  101.                         break;  
  102.                     case 99:  
  103.                         clearImage();  
  104.                         break;  
  105.                     }  
  106.                 }  
  107.             };  
  108.     private void clearImage()  
  109.     {  
  110.         for(ImageView image:images)  
  111.         {  
  112.             image.setImageDrawable(null);  
  113.             image.destroyDrawingCache();  
  114.         }  
  115.     }  
  116.     private void initImage(LinearLayout layout) {  
  117.           
  118.         layout.setGravity(Gravity.CENTER_HORIZONTAL);  
  119.         LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(4040);  
  120.         param.setMargins(30, marginsTop, 00);  
  121.           
  122.         LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(4040);  
  123.         param2.setMargins(-5, marginsTop, 00);  
  124.  
  125.         ImageView l = new ImageView(this);  
  126.         l.setLayoutParams(param);  
  127.         layout.addView(l);  
  128.         images.add(l);  
  129.  
  130.         ImageView o = new ImageView(this);  
  131.         o.setLayoutParams(param2);  
  132.         layout.addView(o);  
  133.         images.add(o);  
  134.           
  135.           
  136.         ImageView a = new ImageView(this);  
  137.         a.setLayoutParams(param2);  
  138.         layout.addView(a);  
  139.         images.add(a);  
  140.           
  141.         ImageView d = new ImageView(this);  
  142.         d.setLayoutParams(param2);  
  143.         layout.addView(d);  
  144.         images.add(d);  
  145.           
  146.         ImageView i = new ImageView(this);  
  147.         i.setLayoutParams(param2);  
  148.         layout.addView(i);  
  149.         images.add(i);  
  150.           
  151.         ImageView n = new ImageView(this);  
  152.         n.setLayoutParams(param2);  
  153.         layout.addView(n);  
  154.         images.add(n);  
  155.           
  156.         ImageView g = new ImageView(this);  
  157.         g.setLayoutParams(param2);  
  158.         layout.addView(g);  
  159.         images.add(g);  
  160.     }  

 
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.  
  3. <set xmlns:android="http://schemas.android.com/apk/res/android" 
  4.     android:shareInterpolator="false">  
  5.     <scale android:interpolator="@android:anim/accelerate_interpolator" 
  6.         android:fromXScale="0.5"   
  7.         android:toXScale="1.2"   
  8.         android:fromYScale="0.5" 
  9.         android:toYScale="1.2"   
  10.         android:pivotX="50%"   
  11.         android:pivotY="50%" 
  12.         android:fillAfter="false"   
  13.         android:startOffset="-50" 
  14.         android:duration="100" 
  15. />  
  16. </set> 

代码地址:http://www.devdiv.com/thread-101608-1-1.html





     本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/817279,如需转载请自行联系原作者



相关文章
|
10月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
1235 27
|
12月前
|
开发框架 前端开发 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择合适的范式进行高效开发。
398 15
|
12月前
|
编解码 前端开发 Java
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
417 11
|
8月前
|
存储 消息中间件 人工智能
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
519 4
|
8月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
567 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
12月前
|
XML Java Android开发
Android自定义view之网易云推荐歌单界面
本文详细介绍了如何通过自定义View实现网易云音乐推荐歌单界面的效果。首先,作者自定义了一个圆角图片控件`MellowImageView`,用于绘制圆角矩形图片。接着,通过将布局放入`HorizontalScrollView`中,实现了左右滑动功能,并使用`ViewFlipper`添加图片切换动画效果。文章提供了完整的代码示例,包括XML布局、动画文件和Java代码,最终展示了实现效果。此教程适合想了解自定义View和动画效果的开发者。
491 65
Android自定义view之网易云推荐歌单界面
|
11月前
|
JavaScript 前端开发 UED
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发四
本文介绍了Web组件开发与性能优化的相关内容。在Web组件开发部分,涵盖创建组件、设置样式与属性、添加事件和方法以及场景示例,如动态播放视频。性能提升方面,推荐使用数据懒加载、条件渲染替代显隐控制、Column/Row替代Flex、设置List组件宽高及调整cachedCount减少滑动白块等方法,以优化应用性能与用户体验。
361 56
|
11月前
|
编解码 UED 开发者
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发之常见布局
本文主要介绍了自适应布局与响应式布局的相关内容。自适应布局部分涵盖线性布局、层叠布局、弹性布局和网格布局,详细说明了各布局的特性及使用方法,例如线性布局中的排列、拉伸与缩放,弹性布局的方向、换行与对齐方式等。响应式布局则重点讲解了栅格系统和媒体查询,阐述如何通过栅格组件和媒体查询条件实现不同设备上的适配效果。这些技术帮助开发者灵活应对多尺寸屏幕的设计需求,提升用户体验。
537 55
|
12月前
|
存储 开发框架 API
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发二
本文详细介绍了基于声明式UI开发的健康饮食应用的设计与实现过程。内容涵盖从基础环境搭建到复杂功能实现的全流程,包括创建简单视图、构建布局(如Stack、Flex)、数据模型设计、列表与网格布局构建,以及页面跳转和数据传递等核心功能。 本文通过实际案例深入浅出地解析了声明式UI开发的关键技术和最佳实践,为开发者提供了宝贵的参考。
438 14
|
11月前
|
JavaScript 前端开发 开发者
09.HarmonyOS Next数据驱动UI开发:ForEach与动态渲染完全指南(上)
在现代前端开发中,数据驱动UI已成为主流开发范式。HarmonyOS Next的ArkTS语言和声明式UI框架完美支持这一理念,使开发者能够以更高效、更直观的方式构建复杂应用。
295 1

热门文章

最新文章