Android 中使用動畫

      看了網上一大堆資料,整理了一下在Android中顯示gif圖片,主要有幾種方法:

    第一種方法:先將gif圖片分拆爲N幀(由美工/軟件完成或者手動截圖),儘量保持每一次圖片大小一致,然後逐次播放,建議動作不是很多的可以使用;

首先,寫一個用作動畫的XML文件,用來設置由幀組成的動畫,android:oneshot 表示是否循環一次,android:duration 表示每一幀的時間間隔毫秒。

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
  <item android:drawable="@drawable/a" android:duration="350" /> 
  <item android:drawable="@drawable/b" android:duration="350" /> 
  </animation-list></span>

然後,在你的當前的Activity的XML中,添加對一個ImageView,我們用它來顯示我們的動畫,這裏我們可以使用android:scaleType 這個屬性設置縮放圖片大小

        <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/log" 
        android:contentDescription="@string/hello_world" />

最後,我們在JAVA代碼中把他們兩個XML聯繫起來,

ImageView imageView = (ImageView)findViewById(R.id.log); 表示在這個Activity的圖片顯示,

imageView.setBackgroundResource(R.layout.kaijidonghua); 表示使用的包含幀動畫的XML文件作背景圖片,

animationDrawable.start(); 利用這個方法啓動動畫,就可以看到效果了。

ImageView imageView = (ImageView)findViewById(R.id.log); 
    imageView.setBackgroundResource(R.layout.kaijidonghua); 
    final AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
    imageView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
		
		@Override
		public boolean onPreDraw() {
			// TODO 自動生成的方法存根
			 animationDrawable.start();
			return true;
		}
	});  


      第二種,直接使用Gif動畫,這是我在網上找的的一個有趣的方法,相對於第一種更簡單,不過縮放效果不好,不建議作背景圖片。

     首先在需要顯示動畫的XML頁面中,添加一個Webview 控件,用來顯示Gif動畫。

    <WebView 
        android:id="@+id/runWebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

然後,在JAVA文件中,添加引用Gif動畫,我把Gif圖片放在assents文件夾下面,這樣我們就可以看到動畫的顯示效果了。

 WebView runWebView=null;

        runWebView = (WebView) findViewById(R.id.runWebView);
        runWebView.loadDataWithBaseURL(null,"<HTML><body bgcolor='#f3f3f3'><div align=center><IMG src='file:///android_asset/run.gif'/></div></body></html>", "text/html", "UTF-8",null);

相對於第一種,我們可以發現這中Gif圖片的大小,不能修改以及自動縮放,我們添加如下代碼,就可以修改初始大小,雙擊縮放大小了。

//縮放開關

webView.getSettings().setSupportZoom(true);

設置此屬性,僅支持雙擊縮放,不支持觸摸縮放(在android4.0是這樣,其他平臺沒試過)

// 設置是否可縮放
webView.getSettings().setBuiltInZoomControls(true);

如果設置了此屬性,那麼webView.getSettings().setSupportZoom(true);也默認設置爲true

2、無限縮放

無限縮放,就需要使用大視圖模式,如下:

//無限縮放
webView.getSettings().setUseWideViewPort(true);設置此屬性,可任意比例縮放。

注:1、初始縮放值可這樣設置:webView.setInitialScale(initalValue);

initalValue 初始爲100%

    2、縮放後,要使內容適配屏幕,不超出屏幕外顯示,實現換行。這方面效果應該由html控制,而不是webview控制。例如<p style="word-break:break-all">test</p>實現自動換行。


      

 

    由於目前我只用到了這幾種方法,當然還有一些更多的方法可以加載Gif圖片,只不過自己沒有親身試過,以後學習了再更新吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章