編輯:關於Android編程
最近再做一個教育類的項目。在做一些學習工具的時候,美工提出了一些要求,大致如下:
其實實現過程也不難,大致就是對一個視圖控件添加一個圓形的背景,然後該視圖進行動畫處理,膨脹的同時,透明度增大,收縮的同時,透明度降低。
我在例子中是使用了TextView,所以首先對TextView添加一個圓形的背景:
// 按鈕模擬心髒跳動
private void playHeartbeatAnimation(final View heartbeatView) {
AnimationSet swellAnimationSet = new AnimationSet(true);
swellAnimationSet.addAnimation(new ScaleAnimation(1.0f, 1.8f, 1.0f, 1.8f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f));
swellAnimationSet.addAnimation(new AlphaAnimation(1.0f, 0.3f));
swellAnimationSet.setDuration(500);
swellAnimationSet.setInterpolator(new AccelerateInterpolator());
swellAnimationSet.setFillAfter(true);
swellAnimationSet.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
AnimationSet shrinkAnimationSet = new AnimationSet(true);
shrinkAnimationSet.addAnimation(new ScaleAnimation(1.8f, 1.0f, 1.8f, 1.0f, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f));
shrinkAnimationSet.addAnimation(new AlphaAnimation(0.3f, 1.0f));
shrinkAnimationSet.setDuration(1000);
shrinkAnimationSet.setInterpolator(new DecelerateInterpolator());
shrinkAnimationSet.setFillAfter(false);
heartbeatView.startAnimation(shrinkAnimationSet);// 動畫結束時重新開始,實現心跳的View
}
});
heartbeatView.startAnimation(swellAnimationSet);
}
private class HeatbeatThread extends Thread {
public void run() {
try {
sleep(100);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
while (true) {
runOnUiThread(new Runnable() {
public void run() {
for (View view : heartbeatViews) {
playHeartbeatAnimation(view);
}
}
});
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
}
private Thread heartbeatThread;
/**
* 開始心跳
*/
private void startHeartBeat() {
if (heartbeatThread == null) {
heartbeatThread = new HeatbeatThread();
}
if (!heartbeatThread.isAlive()) {
heartbeatThread.start();
}
}
/**
* 停止心跳
*/
private void stopHeartBeat() {
if (heartbeatThread != null && heartbeatThread.isInterrupted()) {
heartbeatThread.interrupt();
heartbeatThread = null;
System.gc();
}
}
@Override
protected void onResume() {
super.onResume();
startHeartBeat();
}
@Override
protected void onPause() {
super.onPause();
stopHeartBeat();
}
安卓應用開發通過java調用c++ jni的圖文使用方法
首先建議一個工程 HelloJni如下圖:按照默認的配置下一步,直到完成 。 如下圖操作,點擊windows菜單-》Prefrence菜單:&nbs
Android 將Activity及其他類打包成jar包供第三方調用
在開發java工程時,一個項目可能分為多個模塊,為了實現模塊間的解耦和獨立,提高模塊的復用性,通常將項目按模塊分為多個java工程進行開發,最後通過jar包等工
Android內存洩漏檢測-LeakCanary
添加LeakCanary依賴包在主模塊app下的build.gradle下添加如下依賴:debugCompile 'com.squar
Android5.0L退出APP橫豎屏切換導致的觸摸屏輸入(Touch Event)無效(凍屏)問題分析(Key Event仍然有效)
一、問題現象1、多次進出需要強制橫屏的app,比如Real FootBall2015,在退出app的時候會有概率出現退出卡頓,然後TP無法輸入的問題。2、出問題時Powe