我正試圖在我的應用中實現活動轉換。我遇到了一個很棒的here。但它只與android jellybean +兼容。上面的鏈接重定向到Nick Butcher顯示活動縮放從視圖轉換的YouTube。按鈕的活動縮放轉換 - Android
我想用薑餅(API 10)+。我怎樣才能做到這一點?我想到的一個想法是將該視圖的位置放在屏幕上,傳遞給即將到來的活動,然後要求即將開展的活動從該位置放大或縮小。我不知道這是否可能。任何想法或解決方案都非常感謝。
謝謝!
我正試圖在我的應用中實現活動轉換。我遇到了一個很棒的here。但它只與android jellybean +兼容。上面的鏈接重定向到Nick Butcher顯示活動縮放從視圖轉換的YouTube。按鈕的活動縮放轉換 - Android
我想用薑餅(API 10)+。我怎樣才能做到這一點?我想到的一個想法是將該視圖的位置放在屏幕上,傳遞給即將到來的活動,然後要求即將開展的活動從該位置放大或縮小。我不知道這是否可能。任何想法或解決方案都非常感謝。
謝謝!
您可以使用此動畫,並改變XY根據圖像的位置和尺寸,並開始在動畫結束,這是一個把戲你的活動,希望它能幫助:
private void centerAndZoomView(View view)
{
RelativeLayout root = (RelativeLayout) findViewById(R.id.rootLayout);
DisplayMetrics dm = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(dm);
int statusBarOffset = dm.heightPixels - root.getMeasuredHeight();
int originalPos[] = new int[2];
view.getLocationOnScreen(originalPos);
int xDest = dm.widthPixels/2;
xDest -= (view.getMeasuredWidth()/2);
int yDest = dm.heightPixels/2 - (view.getMeasuredHeight()/2) - statusBarOffset;
TranslateAnimation anim = new TranslateAnimation(0, xDest - originalPos[0] , 0, yDest - originalPos[1]);
Animation scale
= new ScaleAnimation(1.0f,root.getMeasuredWidth()/view.getMeasuredWidth() , 1.0f, root.getMeasuredHeight()/view.getMeasuredHeight(),
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scale.setInterpolator(new AccelerateInterpolator());
AnimationSet set = new AnimationSet(false);
set.addAnimation(scale);
set.addAnimation(anim);
set.setFillAfter(true);
set.setDuration(10000);
//set.start();
view.startAnimation(set);
set.setAnimationListener(new AnimationListener()
{
@Override
public void onAnimationStart(Animation animation){}
@Override
public void onAnimationRepeat(Animation animation){}
@Override
public void onAnimationEnd(Animation animation)
{
Intent intent = new Intent(getApplication(), NextActivity.class);
startActivity(intent);
Toast.makeText(getApplicationContext(), "END OF ANIMATION", Toast.LENGTH_LONG).show();
}
});
}
我結合TranslateAnimation和ScaleAnimation根據屏幕寬度和高度,可以傳遞任何View(Button,ImageView,LinarLayout ...)作爲參數,並且您的根佈局必須具有「rootLayout」ID。
您可以使用Activity.overridePendingTransition()
方法並指定您自己的動畫。自從API級別5以來,這一功能就已經可用。尼克在視頻中使用的只是實現相同目的的一種新方式,並在API級別16中引入。請注意,爲了支持較舊的API,您必須使用一個Animation
資源(補間動畫),而不是Animator
類型。你可以做翻譯,alpha和縮放(縮放)類型的動畫。
我讀了'overridePendingTransition()',但我認爲它不可能做到Nick使用這種方法做的事情。你能告訴我一個很好的網站,這是解釋或如果你知道它,請幫助我! –
我沒有機會觀看整個視頻,所以我無法評論他到底在做什麼。但是,我已經能夠使用這種方法,而無需執行我自己的自定義動畫。他具體做什麼,你認爲是不可能的? –
他通過從視圖中縮放來開始新活動的部分 –
看起來不錯。但我現在完成了android中的動畫。你能告訴我什麼時候打電話嗎?我想按鈕點擊開始一個新的活動。 –
我想爲你創造,但我在工作:),那麼你可以從這裏開始:http://cogitolearning.co.uk/?p=1019 – Smile2Life
謝謝!當你得到時間,請幫助我。 –