1. 程式人生 > >Android UI開發第十五篇——分享一個登入緩衝介面

Android UI開發第十五篇——分享一個登入緩衝介面

      今天在網上發現了一個很漂亮的緩衝介面,在這裡分享一下。主要還是用的android Anim。

java code:

public class Main extends Activity {
	private Animation anm;
	private int marginsTop;
	public List<ImageView> images;
	public LinearLayout ll;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

		requestWindowFeature(Window.FEATURE_NO_TITLE);

		DisplayMetrics dm = this.getResources().getDisplayMetrics();

		int height = dm.heightPixels;
		marginsTop = height - 100;
		anm = AnimationUtils.loadAnimation(this, R.anim.myanim);
		ll = new LinearLayout(this);
		ll.setBackgroundResource(R.drawable.background);

		images = new ArrayList<ImageView>();
		initImage(ll);
		playAnimation();
		setContentView(ll);
    }
    private void playAnimation(){    	
    		new Thread(){
    			@Override
    			public void run()
    			{
    				try {
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					int runcount=0;
    				while(true)
    				{
    					if(runcount<2)
    					{
	    					for(int i=0;i<=6;i++)
	    					{
	    						handler.sendEmptyMessage(i);
	    						try {
	    							Thread.sleep(400);
	    						} catch (InterruptedException e) {
	    							e.printStackTrace();
	    						}
	    					}
	    					runcount++;
    					}else
    					{
    						handler.sendEmptyMessage(99);
    						runcount=0;
    					}
    					

    				}

    			}

    		}.start();
    	}
    	

    Handler handler=new Handler(){

    			@Override
    			public void handleMessage(Message msg) {  				
    				switch(msg.what)
    				{
    				case 0:
    					images.get(0).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.l));
    					images.get(0).startAnimation(anm);
    					
    					break;
    				case 1:
    					images.get(1).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.o));
    					images.get(1).startAnimation(anm);
    					break;
    				case 2:
    					images.get(2).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.a));
    					images.get(2).startAnimation(anm);
    					break;
    				case 3:
    					images.get(3).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.d));
    					images.get(3).startAnimation(anm);
    					break;
    				case 4:
    					images.get(4).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.i));
    					images.get(4).startAnimation(anm);
    					break;
    				case 5:
    					images.get(5).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.n));
    					images.get(5).setAnimation(anm);
    					break;
    				case 6:
    					images.get(6).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.g));
    					images.get(6).setAnimation(anm);
    					break;
    				case 99:
    					clearImage();
    					break;
    				}
    			}
    		};
    private void clearImage()
    {
    	for(ImageView image:images)
    	{
    		image.setImageDrawable(null);
    		image.destroyDrawingCache();
    	}
    }
    private void initImage(LinearLayout layout) {
    	
    	layout.setGravity(Gravity.CENTER_HORIZONTAL);
		LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(40, 40);
		param.setMargins(30, marginsTop, 0, 0);
		
		LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(40, 40);
		param2.setMargins(-5, marginsTop, 0, 0);

		ImageView l = new ImageView(this);
		l.setLayoutParams(param);
		layout.addView(l);
		images.add(l);

		ImageView o = new ImageView(this);
		o.setLayoutParams(param2);
		layout.addView(o);
		images.add(o);
		
		
		ImageView a = new ImageView(this);
		a.setLayoutParams(param2);
		layout.addView(a);
		images.add(a);
		
		ImageView d = new ImageView(this);
		d.setLayoutParams(param2);
		layout.addView(d);
		images.add(d);
		
		ImageView i = new ImageView(this);
		i.setLayoutParams(param2);
		layout.addView(i);
		images.add(i);
		
		ImageView n = new ImageView(this);
		n.setLayoutParams(param2);
		layout.addView(n);
		images.add(n);
		
		ImageView g = new ImageView(this);
		g.setLayoutParams(param2);
		layout.addView(g);
		images.add(g);
	}
}


anim code:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"
	android:shareInterpolator="false">
	<scale android:interpolator="@android:anim/accelerate_interpolator"
		android:fromXScale="0.5" 
		android:toXScale="1.2" 
		android:fromYScale="0.5"
		android:toYScale="1.2" 
		android:pivotX="50%" 
		android:pivotY="50%"
		android:fillAfter="false" 
		android:startOffset="-50"
		android:duration="100"
/>
</set>

/**
* @author 張興業
* 郵箱:xy-zhang#163.com
* android開發進階群:278401545
*
*/

相關推薦

Android UI開發——分享一個登入緩衝介面

      今天在網上發現了一個很漂亮的緩衝介面,在這裡分享一下。主要還是用的android Anim。java code:public class Main extends Activity { private Animation anm; private int ma

Android UI開發第二——分享自定義的 Action Bar

       Action Bar是android3.0以後才引入的,主要是替代3.0以前的menu和tittle bar。在3.0之前是不能使用Action Bar功能的。這裡引入了自定義的Actio

Android UI開發——可以移動的懸浮框

          工作中遇到一些專案需要把窗體顯示在最上層,像來電彈窗顯示電話號碼等資訊或攔截簡訊資訊顯示給使用者,我們想這些資料放在最上層,activity就滿足不了我們的需求了,有些開發者使用了迴圈顯示Toast的方式,toast是不能獲得焦點的,這種方法是不可取的。這

PowerBI開發 :Power BI的行級安全

Power BI支援行級安全(Row-Level Security,RLS)的許可權控制,用於限制使用者對Dashboard、報表和DataSet的訪問。使用者瀏覽的報表是相同的,但是看到的資料卻是不同的。 RLS內部通過DAX函式 username() 和 userprincipalname()來實現,R

Android UI開發——Android的Holo Theme

        好長時間沒寫Android UI方面的文章了,今天就閒扯一下Android的Holo主題。一直做android開發的可能都知道,Android 系統的UI有過兩次大的變化,一次是andr

Android UI開發——ScrollTricks介紹

ScrollTricks是一個開源控制元件,實現了兩個簡單功能:1、Quick Return:向上滑動時,View也向上滑動並且消失,當向下滑動時,View馬上出現。例如Google Now的搜尋功能。

Android UI開發——使用Fragment構建靈活的桌面

http://www.lupaworld.com/article-222973-1.html 當我們設計應用程式時,希望能夠盡最大限度的適配各種裝置,包括4寸屏、7寸屏、 10寸屏等等,Android開發文件給了我們參考,而且Google IO的app(如圖二)也實現了

python全棧開發】面向對象三大特性——封裝

inf delete 面向對象 修改 turn 外部 clas fun 內部 1.封裝: 什麽是封裝呢?(封裝不是單純意義的隱藏,其實它還是可以查看的)   就是把一些不想讓別人看的給隱藏起來了 封裝數據:目的是保護隱私 功能封裝:目的是隔離復雜度 如果用了私有的,在類的外

Android提高之ListView自適應實現表格

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

和諧

entry 信息 同時 這就是我 包括 意義 -1 www 空間信息 第十五篇 和諧 “和諧”對於整個宇宙來講至關重要,無論是宇宙自身空間的環境還是萬物之間都需要和諧。如果在任何方面或任何領域出現不和諧的因素,就會對宇宙本身及宇宙中的萬物帶來很大的影響。這種影響大

:JavaScript 之 Dom操作

頁面 對象模型 面向 方法 bsp log gpo eva div 一、後臺管理頁面布局 二、JavaScript函數 三、eval以及時間操作 四、JavaScript作用域 五、JavaScript面向對象模型 六、DOM選擇器 七、DOM事件操作 八、DOM綁定事件的

web前端【】popup簡單使用(彈出頁面)

model 循環 sci return submit mutable 數據 src close 一、首先說一下自執行函數 1. 立即執行函數是什麽?也就是匿名函數 立即執行函數就是 聲明一個匿名函數 馬上調用這個匿名函數 2、popup的舉例 點擊,彈出一個新的窗口

Django 【】緩存

是否 man tom pro n) database core import second 由於Django是動態網站,所有每次請求均會去數據進行相應的操作,當程序訪問量大時,耗時必然會更加明顯,最簡單解決方式是使用:緩存,緩存將一個某個views的返回值保存至內存或者me

PowerBI開發 :DAX 表達式(時間+過濾+關系)

數據 bsp 可能 library 聚合 ont 數據分析 狀態 mon DAX表達式中包含時間關系(Time Intelligence)相關的函數,用於對日期維度進行累加、同比和環比等分析。PowerBI能夠創建關系,通過過濾器來對影響計算的上下文。 一,時間關系 D

轉載:SpringBoot非官方教程 | :Springboot整合RabbitMQ

這篇文章帶你瞭解怎麼整合RabbitMQ伺服器,並且通過它怎麼去傳送和接收訊息。我將構建一個springboot工程,通過RabbitTemplate去通過MessageListenerAdapter去訂閱一個POJO型別的訊息。 準備工作 15min ID

15-撩課大前端-面試寶典-

1.請描述一下 cookies,sessionStorage 和 localStorage 的區別? cookie是網站為了標示使用者身份而儲存在使用者本地終端(Client Side)上的資料(通常經過加密)。 cookie資料始終在同源的http請求中攜帶(即使不需要),記會

PowerBI開發 :DAX 表示式(時間+過濾+關係)

DAX表示式中包含時間關係(Time Intelligence)相關的函式,用於對日期維度進行累加、同比和環比等分析。PowerBI能夠建立關係,通過過濾器來對影響互動的上下文。 一,時間關係 DAX表示式有兩種方式計算累加和,TOTALxTD()是DATESxTD()的語法糖,使得PowerBI對累加和

設計模式-命令模式

1. 定義       命令模式是一個高內聚的模式,其定義為:Encapsulate  a request as  an object , thereby letting you parameterize clients with different requests, qu

Django-----國際化

目錄 基本定義 國際化 本地化 區域設定名稱 語言程式碼 訊息檔案 翻譯字串 格式檔案 國際化模板程式碼 trans 模板標籤 其他標籤  實現方式說明 基本定義 國際化 指為任何區域設定提供支援的程式設計過程。這個過程通常由

SpringBoot非官方教程 | :Springboot整合RabbitMQ

這篇文章帶你瞭解怎麼整合RabbitMQ伺服器,並且通過它怎麼去傳送和接收訊息。我將構建一個springboot工程,通過RabbitTemplate去通過MessageListenerAdapter去訂閱一個POJO型別的訊息。 準備工作 15min ID