我想要做的是同時縮放和翻譯基於ImageView時,用戶接觸是。 ImageView的最終位置和大小應該等於目標。同時縮放和翻譯基於目標的ImageView
下面是每個應執行此操作的ImageView附加的OnClickListener的Snipper。新的位置和大小從ivYou獲得,這也是一個ImageView。
@Override
public void onClick(View v) {
// Create animations
int[] from = new int[2];
int[] to = new int[2];
//v.getLocationInWindow(from);
v.getLocationOnScreen(from);
//ivYou.getLocationInWindow(to);
ivYou.getLocationOnScreen(to);
TranslateAnimation transAnim = new TranslateAnimation(0, to[0] - from[0], 0, to[1] - from[0]);
float factorX = ivYou.getWidth()/v.getWidth();
float factorY = ivYou.getHeight()/v.getHeight();
ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, factorX, 1.0f, factorY);
// Create animation set
AnimationSet set = new AnimationSet(true);
set.setFillAfter(true);
set.setDuration(ANIM_DURATION);
set.addAnimation(transAnim);
set.addAnimation(scaleAnim);
// Start animations and disable click listener
v.startAnimation(set);
v.setOnClickListener(null);
}
ANIM_DURATION是2000毫秒。
當我運行這段代碼時,最奇怪的事情發生了。 ImageView變成半圈,然後變小。當我沒有將ScaleAnimator添加到動畫集時,ImageView會移動到新的位置。但是,這個新位置對於每個ImageView都不相同。請注意,帶有此OnClickListener的ImageView具有不同的初始位置。
任何幫助和反饋,非常感謝!
您必須在圖像視圖的中心有縮放動畫的關鍵點。然後,您必須在平移動畫的計算中包含偏移量(由於比例)。我沒有工作代碼,你必須自己考慮一下:| – MalaKa
向ScaleAnimation添加了「ScaleAnimation.RELATIVE_TO_SELF,.5f,ScaleAnimation.RELATIVE_TO_SELF,.5f」。沒有那個運氣。 –
是的,現在有什麼問題?翻譯動畫無法正常工作? – MalaKa