編輯:關於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
Android開發學習之Camera
今天本來想寫一篇關於百度地圖定位SDK的文章的,無奈根據官網提供的例子編寫的程序始終無法運行,所以這個計劃只能落空。那麼今天要與大家分享的是Camera,即照相機。隨著硬
ListView之BaseAdapter和AsyncTask異步任務
BaseAdapterBaseAdapter是實現了ListAdapter和SpinnerAdapter兩個接口,當然它也可以直接給ListView和Spinner等UI
android中wifi原理及流程分析
wifi相關的文件位置:WIFI Settings應用程序位於packages/apps/Settings/src/com/android/settings/wifi/J
Android中TimePicker與DatePicker時間日期選擇組件的使用實例
效果和代碼都非常直觀:實例1:TimePicker<RelativeLayout xmlns:android=http://schemas.android.com/