程式設計師表白程式,開放原始碼在此!
寫在前面:
原始碼地址:https://github.com/wuxia2001/mylove.git
APK 地址:http://zhushou.360.cn/detail/index/soft_id/1380324
CSDN 下載地址:http://download.csdn.net/detail/wuxia2001/8703091
先上圖:
這次上的都是 GIF,通過手機錄屏得到的。
主要改動在於多了一個介面,然後對部分介面進行修改,增快的播放速度。
這裡增加了一種進入設定介面方法,以前的先點選單再點返回依然有效,增加了在任何介面連擊三下就可進入設定介面。
連擊三下(兩下)程式碼如下:
在最外圍的佈局裡增加 click 事件,記錄點選時間和次數,並在一定時間內清空時間和次數,就得得到三次連擊。
[java] view plain copy
f1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if((System.currentTimeMillis()-lastclicktime)<=1500){
lastclicktime = System.currentTimeMillis();
clicktimes++;
}else {
lastclicktime=System.currentTimeMillis();
}
if(clicktimes>=2) gotoConfigAcitvity();
handler.sendEmptyMessageDelayed(CACLICK, 4000);
}
});
從 gif 圖片上可以看到進入到設定介面有個動態效果,這個效果取自於 SmoothTransition, 地址為:https://github.com/dkmeteor/SmoothTransition。
他己完整的對整個過程都封裝了,提供了翻轉,淡入淡出,左飛入,上飛入,scale 等效果,可以對整個介面和 fragment 使用,具體效果請去看他的 demo。
對於這個過程,可以對幾個動畫效果聯合在一起使用,這個效果是對整個效果的所有控制元件,先 setAlpha(0), 然後逐步用屬性動畫把所有控制元件顯示出來,適用範圍很廣,也要拆分開來,對一個 layout 裡的小布局使用,比如我第四個介面裡的部分效果。
[java] view plain copy
<span style="white-space:pre"> </span>//在拆開使用前要把view裡的所有控制元件透明
<span style="white-space:pre"> </span>private void bindAnimation(View view) {
if (view instanceof ViewGroup) {
ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i++) {
bindAnimation(group.getChildAt(i));
}
} else {
view.setAlpha(0);
}
}
[java] view plain copy
<span style="white-space:pre"> </span>new SwitchAnimationUtil(2000,5000).startAnimation(sf_imageview, AnimationType.ALPHA);
new SwitchAnimationUtil(1000,5000).startAnimation(rl_middle_love, AnimationType.ROTATE);
new SwitchAnimationUtil(2000,5000).startAnimation(iv_love_pink, AnimationType.ALPHA);
new SwitchAnimationUtil(2000,5000).startAnimation(ll_name, AnimationType.SCALE);
還可以看到從第三個介面進入第四個介面時會有個水紋波的效果。
這個效果用的是同一個的介面過渡效果,地址為:https://github.com/dkmeteor/ActivityAnimationLib,他這裡提供了七種效果,包括摺疊,水紋,模糊,關門等效果。我的原始碼裡集成了水紋效果,其他都刪去了,有想法的同學去看他的原始碼吧。
還可以在最後一個介面,有一個閃爍的效果,這個效果用的是開原始碼 ShimmerFrameLayout,其實就是把整個 layout 裡的控制元件把 alpha 先設成小一點,比如 0.8,然後 1 就是高亮啦,具體還是看程式碼吧~
最後,祝福大家都能告白成功
精彩回顧 點藍字即可