小編給大家分享一下android如何實(shí)現(xiàn)翻轉(zhuǎn)卡片的動(dòng)畫效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
鎮(zhèn)安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
首頁(yè)
首頁(yè)由正面和背面兩張卡片組成, 同時(shí), 設(shè)置點(diǎn)擊事件flipCard.
邏輯, 初始化動(dòng)畫和鏡頭距離.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); setAnimators(); // 設(shè)置動(dòng)畫 setCameraDistance(); // 設(shè)置鏡頭距離 }
動(dòng)畫
初始化右出(RightOut)和左入(LeftIn)動(dòng)畫, 使用動(dòng)畫集合AnimatorSet.
當(dāng)右出動(dòng)畫開始時(shí), 點(diǎn)擊事件無(wú)效, 當(dāng)左入動(dòng)畫結(jié)束時(shí), 點(diǎn)擊事件恢復(fù).
// 設(shè)置動(dòng)畫 private void setAnimators() { mRightOutSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_out); mLeftInSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_in); // 設(shè)置點(diǎn)擊事件 mRightOutSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); mFlContainer.setClickable(false); } }); mLeftInSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); mFlContainer.setClickable(true); } }); }
右出動(dòng)畫
旋轉(zhuǎn)180°, 當(dāng)旋轉(zhuǎn)一半時(shí), 卡片消失.
左入動(dòng)畫
在開始時(shí)是隱藏, 逆向旋轉(zhuǎn), 當(dāng)旋轉(zhuǎn)一半時(shí), 顯示卡片.
鏡頭視角
改變視角, 涉及到旋轉(zhuǎn)卡片的Y軸, 即rotationY, 需要修改視角距離.
如果不修改, 則會(huì)超出屏幕高度, 影響視覺(jué)體驗(yàn).
// 改變視角距離, 貼近屏幕 private void setCameraDistance() { int distance = 16000; float scale = getResources().getDisplayMetrics().density * distance; mFlCardFront.setCameraDistance(scale); mFlCardBack.setCameraDistance(scale); }
旋轉(zhuǎn)控制
設(shè)置右出和左入動(dòng)畫的目標(biāo)控件, 兩個(gè)動(dòng)畫同步進(jìn)行, 并區(qū)分正反面朝上.
// 翻轉(zhuǎn)卡片 public void flipCard(View view) { // 正面朝上 if (!mIsShowBack) { mRightOutSet.setTarget(mFlCardFront); mLeftInSet.setTarget(mFlCardBack); mRightOutSet.start(); mLeftInSet.start(); mIsShowBack = true; } else { // 背面朝上 mRightOutSet.setTarget(mFlCardBack); mLeftInSet.setTarget(mFlCardFront); mRightOutSet.start(); mLeftInSet.start(); mIsShowBack = false; } }
動(dòng)畫效果
以上是“android如何實(shí)現(xiàn)翻轉(zhuǎn)卡片的動(dòng)畫效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!