今天苦於思索應用如何美觀,首先從載入頁面的第一眼開始,Android動畫分為四種:alpha(漸變透明度),scale(漸變尺寸伸縮),translate(畫面轉換位置移動),rotate(畫面轉移旋轉);今天先寫第一個動畫alpha。
動畫效果有兩種實現:
一、在xml中定義:
alpha.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 透明度控制動畫效果 alpha 浮點型值: fromAlpha 屬性為動畫起始時透明度 toAlpha 屬性為動畫結束時透明度 說明: 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之間的float數據類型的數字 長整型值: duration 屬性為動畫持續時間 說明: 時間以毫秒為單位 --> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="5000" /> </set>
二、在頁面Activity中聲明:
Animation animation = new AlphaAnimation(0.1f, 1.0f); animation.setDuration(5000);
完成動畫漸變透明度的參數設定后,我們就要開始在應用中使用它:
public class SplashActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.welcome); View view = View.inflate(SplashActivity.this, R.layout.welcome, null); setContentView(view); //動畫效果參數直接定義 Animation animation = new AlphaAnimation(0.1f, 1.0f); animation.setDuration(5000); //動畫效果從XMl文件中定義 // Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha); view.setAnimation(animation); } }
這樣我們就完成了預定的動畫效果,但是我們的最終目的是動畫效果完畢以后跳轉到相應的頁面,所以我們對動畫添加了監聽:
animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub Intent intent = new Intent(SplashActivity.this,MainActivity.class); startActivity(intent); } });
這樣的話,我們在動畫的持續時間中預加載我們的資源,當動畫結束以后跳轉到我們的主頁面;
代碼:http://pan.baidu.com/share/link?shareid=222077530&uk=3909095065
今天想做一個類似於人人的效果,實現目標為:背景圖漸變,下方的文本框不隨之漸變
目標圖:
XML布局代碼 :activity_main.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:id="@+id/backImage" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="center" android:background="@drawable/v5_3_0_guide_pic3" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dip" android:layout_gravity="center_horizontal|bottom" android:padding="12dip" android:background="#AA000000" android:textColor="#ffffffff" android:text="Golden Gate" /> </merge>
主頁面Activity代碼:MainActivity.java
public class MainActivity extends Activity { ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.backImage); // View view = View.inflate(MainActivity.this, R.id.backImage, null); //動畫效果參數直接定義 Animation animation = new AlphaAnimation(0.1f, 1.0f); animation.setDuration(5000); //動畫效果從XMl文件中定義 // Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha); image.setAnimation(animation); animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub // Intent intent = new Intent(MainActivity.this,MainActivity.class); // startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
目的達到了,源碼:http://pan.baidu.com/share/link?shareid=1973122666&uk=3909095065