編輯:關於Android編程
1.使用開源庫制作view 的放大+透明度的動畫
animate(v).scaleX(factor).scaleY(factor).alpha(0);2. 設計回調接口
public interface ClickAnimation {
public void onClick(View v);
}3. 在view 的onclick 的處理中增加動畫的調用,並把以前的onclick事件處理 作為回調加入到animation中,在動畫完成後回調處理函數。在動畫結束時將view的狀態恢復到原始狀態
private void animateClickView(final View v, final ClickAnimation callback) {
float factor = 2;
animate(v).scaleX(factor).scaleY(factor).alpha(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
ViewHelper.setScaleX(v, 1);
ViewHelper.setScaleY(v, 1);
ViewHelper.setAlpha(v, 1);
if (callback != null) {
callback.onClick(v);
}
super.onAnimationEnd(animation);
}
});
}4. TODO:可以依據這個結構,添加更多動畫效果。比如搖擺/震動等
實現效果參見youku視頻:
http://v.youku.com/v_show/id_XNjYzOTI4NzMy.html
具體實現參加代碼:
java文件
package com.buptfarmer.devapp;
import static com.nineoldandroids.view.ViewPropertyAnimator.animate;
import com.nineoldandroids.animation.Animator;
import com.nineoldandroids.animation.AnimatorListenerAdapter;
import com.nineoldandroids.view.ViewHelper;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class ClickAnimationExample extends Activity implements OnClickListener {
private Button aaaBtn;
private Button bbbBtn;
private ImageView bbbImg;
private Button cccBtn;
private TextView aaaText;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.click_animation_example);
initView();
}
private void initView() {
aaaBtn = (Button) findViewById(R.id.aaa_btn);
aaaBtn.setOnClickListener(this);
aaaText = (TextView) findViewById(R.id.aaa_text);
aaaText.setOnClickListener(this);
bbbBtn = (Button) findViewById(R.id.bbb_btn);
bbbBtn.setOnClickListener(this);
bbbImg = (ImageView) findViewById(R.id.bbb_img);
bbbImg.setOnClickListener(this);
}
private void animateClickView(final View v, final ClickAnimation callback) {
float factor = 2;
animate(v).scaleX(factor).scaleY(factor).alpha(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
ViewHelper.setScaleX(v, 1);
ViewHelper.setScaleY(v, 1);
ViewHelper.setAlpha(v, 1);
if (callback != null) {
callback.onClick(v);
}
super.onAnimationEnd(animation);
}
});
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
animateClickView(v, new ClickAnimation() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == aaaBtn) {
Toast.makeText(getApplicationContext(), "aaaBtn has been clicked", Toast.LENGTH_SHORT)
.show();
} else if (v == aaaText) {
Toast.makeText(getApplicationContext(), "aaaText has been clicked", Toast.LENGTH_SHORT)
.show();
} else if (v == bbbBtn) {
Toast.makeText(getApplicationContext(), "bbbBtn has been clicked", Toast.LENGTH_SHORT)
.show();
} else if (v == bbbImg) {
Toast.makeText(getApplicationContext(), "bbbImg has been clicked", Toast.LENGTH_SHORT)
.show();
}
}
});
}
public interface ClickAnimation {
public void onClick(View v);
}
}
layout 布局文件
Android上用模板方法模式實現具有自動重用View功能的Adapter
ListView和GridView簡介 在Android App的開發中, ListView和GridView等控件是使用非常頻繁的控件。 這兩個控件的特點是使用數據
.Net程序員玩轉Android開發---(17)Handler用法
在android開發中,如果在一個線程中想更新主界面中控件顯示的數據,直接給主界面控件賦值就會出現異常,android中為了安全起見,是不允許在線程中更新界面控件的數據,
Android之ListView異步加載圖片且僅顯示可見子項中的圖片
折騰了好多天,遇到 N 多讓人崩潰無語的問題,不過今天終於有些收獲了,這是實驗的第一版,有些混亂,下一步進行改造細分,先把代碼記錄在這兒吧。 網上查了很多資料,發現都千篇
Android TabActivity使用方法
TabActivity 首先Android裡面有個名為TabActivity來給我們方便使用。其中有以下可以關注的函數: public TabHost getT