編輯:關於Android編程
在Android應用程序,使用動畫效果,能帶給用戶更好的感覺,做動畫可以通過XML或Android代碼來實現。
Animation動畫效果的實現可以通過兩種方式進行實現,一種是tweened animation (漸變動畫),另一種是frame by frame animation (畫面轉換動畫)。
tweened animation漸變動畫有以下兩種類型:
1.alpha 漸變透明度動畫效果
2.scale 漸變尺寸伸縮動畫效果
frame by frame animation 畫面轉換動畫有以下兩種類型:
1.translate 畫面轉換位置移動動畫效果
2.rotate 畫面轉移旋轉動畫效果
在這裡,我使用XML來做動畫。實現基本的動畫,如淡入,旋轉等。
步驟:1、首先在res目錄中新建anim的文件夾,在anim中新建需要的動畫xml資源文件。
anim/alpha.xml(漸變動畫)
anim/scale.xml(伸縮動畫)
anim/translate.xml(移動動畫)
anim/rotate.xml(旋轉動畫)
2、xml資源文件創建完成之後,接下來就是調用這些資源文件。以alpha為例,先創建AlphaActivity。
在activity_alpha.xml中隨便放一張背景圖片
AlphaActivity.java
package com.example.animation_demo; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.Toast; public class AlphaActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); View view=View.inflate(this, R.layout.activity_alpha, null); setContentView(view); //使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件 Animation animation=AnimationUtils.loadAnimation(this, R.anim.alpha); view.startAnimation(animation); animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation arg0) {} //在動畫開始時使用 @Override public void onAnimationRepeat(Animation arg0) {} //在動畫重復時使用 @Override public void onAnimationEnd(Animation arg0) { Toast.makeText(AlphaActivity.this, "在動畫結束時使用", Toast.LENGTH_SHORT).show(); } }); } }
這個是整個layout文件的動畫,也可以讓任何UI元素調用starAnimation方法。
例如:textMsg.startAnimation(animation); 這時候就不需要下面代碼 動畫填充指定xml了
View view=View.inflate(this, R.layout.activity_alpha, null); setContentView(view);直接setContentView(R.layout.activity_alpha); 就OK了。卒。
今天剛用到,遲點貼出圖片。。
附上找到的一些基本的xml效果:
Fade In:淡入
alpha是漸變透明度效果,值由0到1
fade_in.xmlFade Out :淡出
fade_out.xmlCross Fading: 交叉的淡入和淡出
public class CrossfadeActivity extends Activity implements AnimationListener { TextView txtMessage1, txtMessage2; Button btnStart; Animation animFadeIn, animFadeOut; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_crossfade); txtMessage1 = (TextView) findViewById(R.id.txtMessage1); txtMessage2 = (TextView) findViewById(R.id.txtMessage2); btnStart = (Button) findViewById(R.id.btnStart); // load animations animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_in); animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_out); // set animation listeners animFadeIn.setAnimationListener(this); animFadeOut.setAnimationListener(this); // button click event btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { txtMessage2.setVisibility(View.VISIBLE); txtMessage2.startAnimation(animFadeIn); txtMessage1.startAnimation(animFadeOut); } }); } @Override public void onAnimationEnd(Animation animation) { if (animation == animFadeOut) { txtMessage1.setVisibility(View.GONE); } if(animation == animFadeIn){ txtMessage2.setVisibility(View.VISIBLE); } } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } }
BLink:若隱若現
blink.xmlZoom In:放大
zoom_in.xmlZoom Out:縮小
Rotate:旋轉
rotate.xml好長啊。。。既然你們都看到這裡了,再多說幾句。。
根節點
名稱
屬性
備注
android:shareInterpolator
是否共享插入器
共享時,四個子節點都用一個插入器
android:interpolator
指定一個動畫的插入器
使用系統資源
android:fillEnabled
當設置為true時,fillAfter和fill, Befroe將會都為true,此時會忽略fillBefore 和fillAfter兩種屬性
android:fillAfter
該動畫轉化是否在動畫結束後被應用
boolean
android:fillBefore
該動畫轉化是否在動畫開始前被應用
boolean
android:repeatMode
重復模式
"restart" 或者 "reverse"
android:repeatCount
重復次數
integer
android:duration
動畫持續時間
integer
android:startOffset
動畫時間間隔
long
android:zAdjustment
定義動畫z order的變換
[normal] or [top] or [bottom]
android:detachWallpaper
boolean
今天本來想寫一篇關於百度地圖定位SDK的文章的,無奈根據官網提供的例子編寫的程序始終無法運行,所以這個計劃只能落空。那麼今天要與大家分享的是Camera,即照相機。隨著硬
BaseAdapterBaseAdapter是實現了ListAdapter和SpinnerAdapter兩個接口,當然它也可以直接給ListView和Spinner等UI
wifi相關的文件位置:WIFI Settings應用程序位於packages/apps/Settings/src/com/android/settings/wifi/J
效果和代碼都非常直觀:實例1:TimePicker<RelativeLayout xmlns:android=http://schemas.android.com/