2014-01-16 57 views
2

推出我從一個Service使用正常模式啓動一個活動:動畫Android應用程序從服務

Intent i = new Intent(getApplicationContext(), MyActivity.class); 
startActivity(i); 

我想動畫是推出如從左側滑入。您可以使用Activity.overridePendingTransition()


有沒有一種方法來從Service動畫活動啓動?

+1

解決方法是啓動隱形活動,然後啓動我想要顯示的內容。但是這給這個過程增加了一點點延遲。 –

回答

0

我採取了將自己的活動放入啓動過程的解決方法。

我的Service啓動了我的HelperActivity附加功能,用於識別我希望啓動/帶到的任務。

HelperActivityonCreate()中啓動實際任務,使用overridePendingTransition()動畫更改。然後撥打finish()以保持隱藏狀態。

顯然HelperActivity需要從背後隱藏,所以清單反映了這一點。


也有安全問題,以這種幼稚的方法 - 看看相關的帖子由Commonsware:

這種類型的活動應儘可能安全。對於我的演示版本,我很樂意設置android:exported="false"


清單代碼:

<activity 
    android:name=".SwitchAnimationHelperActivity" 
    android:excludeFromRecents="true" 
    android:exported="false" 
    android:noHistory="true" > 
</activity> 

HelperActivity代碼:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    String componentName = getIntent().getStringExtra("TASK_ID_API"); 
    Intent newTask = new Intent(Intent.ACTION_MAIN); 
    newTask.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    newTask.setComponent(ComponentName.unflattenFromString(componentName)); 
    startActivity(newTask); 
    overridePendingTransition(R.anim.anim_zoom_in, R.anim.anim_slide_out_left); 

    // job is done 
    finish(); 
} 

所以有它是 - 動畫從Service發射任務的一種方式。