2011-02-17 41 views
15

Tôi có một ứng dụng hiển thị danh sách các mục. tôi cần hiển thị hình ảnh mờ dần trước khi bắt đầu hoạt động chính. tôi đã cố gắng một cái gì đó giống như rằng trong phương pháp onCreate hoạt động chính tôi bắt đầu hoạt động một hình ảnh động nhưCách triển khai màn hình giật gân trong android

Intent animationIntent=new Intent(this,AnimationActivity.class); 
startActivityForResult(AnimationIntent); 

trong phương pháp onCreate của AnimationActivity.class

super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ImageView introanim = (ImageView) findViewById(R.id.imgView); 
    AnimationSet StoryAnimation = (AnimationSet)AnimationUtils. 
loadAnimation(this, R.anim.alphanim); 
StoryAnimation.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
       AnimationSubActivity.this.finish(); 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      AnimationSubActivity.this.finish(); 
     } 
    }); 

    introanim.clearAnimation(); 
    introanim.startAnimation(StoryAnimation); 

và main.xml của tôi là

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<ImageView 
android:id="@+id/imgView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:src="@drawable/icon" 
/> 
</LinearLayout> 

vấn đề với cách tiếp cận này là nó hiển thị một sự hấp dẫn nhưng tưởng tượng đến màn hình f hoặc một thời gian và hoạt động chính đi kèm với hiệu ứng chuyển trượt

nhưng tôi muốn tôi hình ảnh mờ dần và hoạt động của tôi nên mờ dần trong

bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn trước

+0

@ user609765 Nếu câu trả lời giải quyết được vấn đề của bạn, bạn nên chấp nhận nó. Vui lòng – MorningGlory

Trả lời

30

Về cơ bản, nội dung bạn đang tìm kiếm là màn hình Splash hiển thị hình ảnh của bạn rồi mờ dần. Màn hình của hoạt động chính sau đó biến mất. Vì vậy, những gì bạn có thể làm là tạo một hoạt động cho màn hình Splash và sau đó là một hoạt động khác cho hoạt động chính bạn có thể muốn gọi. Đây sẽ là hoạt động Splash Screen của bạn.

public class SplashScreen extends Activity { 
private static final int SPLASH_DISPLAY_TIME = 4000; // splash screen delay time 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 

      Intent intent = new Intent(); 
      intent.setClass(Splash.this, NextActivity.class); 

      Splash.this.startActivity(intent); 
      Splash.this.finish(); 

      // transition from splash to main menu 
      overridePendingTransition(R.animate.activityfadein, 
        R.animate.splashfadeout); 

     } 
    }, SPLASH_DISPLAY_TIME); 
} 

Tiếp theoHoạt động là bất kỳ hoạt động nào bạn muốn mờ dần và thay thế. Đối với các hình động bạn sẽ cần tạo hai tệp xml trong một thư mục có tên là animate trong tài nguyên của bạn. Dưới đây là file splashfadeout.xml

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/decelerate_interpolator" 
android:zAdjustment="top" android:fromAlpha="1.0" android:toAlpha="0.0" 
android:duration="4000" /> 

Đây sẽ là tập tin activityfadein.xml

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator" 
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" /> 

Những tập tin này về cơ bản làm cho hoạt động của bạn phai trong và ngoài

+0

cảm ơn rất nhiều vì nó rất tuyệt vời –

+1

tại sao bạn sử dụng Trình xử lý để bắt đầu một hoạt động thay vì chỉ bắt đầu Hoạt động trong OnCreate? – kaid

+1

Cảm ơn lời khuyên tuyệt vời này. Chỉ cần một lưu ý cho những người khác rằng thư mục nên được đặt tên là "anim" thay vì "animate". Chúc mừng – Ethan

4

A "Splash Screen" như một trong những @Manish Burman cho thấy không phải là một thực tế. Nó thực sự chỉ là một "toàn màn hình comercial", mà không có người dùng muốn dành nhiều thời gian của mình nhìn vào. Nó không có mục đích ngoại trừ việc ở đó, có nghĩa là nó không che giấu thời gian tải dài hoặc một cái gì đó trong khu vực đó, giống như một màn hình giật gân thực sự nên.

Nếu bạn để hiển thị một màn hình, nó phải là bởi vì bạn có một hoạt động ban đầu mà phải mất khá nhiều thời gian để tải - sau đó một màn hình có thể được biện minh, để hiển thị cho người dùng biết những thứ đang tải hoặc để thuyết phục anh rằng ứng dụng không "chết".

Khám phá this hướng dẫn về cách tạo màn hình giật gân thực sự.

Các vấn đề liên quan