启动画面淡入淡出动画问题

时间:2014-06-25 10:17:08

标签: android android-animation fade splash-screen

我在启动画面中显示fade three images动画。我的输出成功了。

但我得到了two issue

  1. 时间加载:

    • 加载启动画面需要更多时间。需要进入    尽快申请。
  2. 应用不关闭:

    • 进入Application.I我试图在模拟器中的后退按钮的帮助下关闭这些应用程序。但它永远不会关闭一个 应用

    • 它停留在一个应用程序本身。在日志猫中,我看到循环1,2和3一次又一次地继续。我无法关闭我的应用程序。

    • 如果我按下主页按钮,它会显示主屏幕,但会再次自动进入应用程序。

  3. logcat的:

    我没有得到任何logcat错误。但是你可以看到logcat读数总是在运行。它永远不会停止。循环1,2和3连续读取logcat。对于这些它永远不会关闭一个应用程序。然后如果我是按主页按钮,将显示主屏幕。但有时它会自动进入这些应用程序。

    06-25 05:46:27.654: V/test(1842): 1
    06-25 05:46:27.684: V/test(1842): 2
    06-25 05:46:31.764: V/test(1842): 1
    06-25 05:46:35.654: V/test(1842): 2
    06-25 05:46:35.684: V/test(1842): 3
    06-25 05:46:39.764: V/test(1842): 2
    06-25 05:46:43.654: V/test(1842): 3
    06-25 05:46:43.684: V/test(1842): 1
    06-25 05:46:44.914: I/Choreographer(1842): Skipped 36 frames!  The application may be doing too much work on its main thread.
    06-25 05:46:46.524: I/ImageCache(1842): Memory cache created (size = 12288)
    06-25 05:46:46.534: V/test1(1842): testhere
    06-25 05:46:46.534: V/3333333(1842): 3333333
    06-25 05:46:47.334: V/####(1842): TFH BANNER1
    06-25 05:46:47.434: V/test2(1842): testhere
    06-25 05:46:47.434: V/test3(1842): testhere
    06-25 05:46:47.434: V/####(1842): TFH BANNER2
    06-25 05:46:47.444: V/####(1842): TFH BANNER3
    06-25 05:46:47.494: V/####(1842): TFH BANNER4
    06-25 05:46:47.674: V/####(1842): TFH BANNER1
    06-25 05:46:47.674: V/test2(1842): testhere
    06-25 05:46:47.684: V/test3(1842): testhere
    06-25 05:46:47.684: I/ImageWorker(1842): cancelPotentialWork - cancelled work for http://tfhapp.fathershouse.in/banner-gallery/tfh-banner1-large-1.jpg
    06-25 05:46:47.684: V/####(1842): TFH BANNER2
    06-25 05:46:47.684: V/####(1842): TFH BANNER3
    06-25 05:46:47.684: V/####(1842): TFH BANNER4
    06-25 05:46:47.764: V/test(1842): 3
    06-25 05:46:47.864: V/APIServiceHandler(1842): API CALLhttp://tfhapp.fathershouse.in/api/video.php
    06-25 05:46:47.864: I/ImageWorker(1842): doInBackground - starting work
    06-25 05:46:48.004: V/####(1842): TFH BANNER1
    06-25 05:46:48.004: V/test2(1842): testhere
    06-25 05:46:48.014: V/test3(1842): testhere
    06-25 05:46:48.014: V/####(1842): TFH BANNER2
    06-25 05:46:48.024: V/####(1842): TFH BANNER3
    06-25 05:46:48.024: V/####(1842): TFH BANNER4
    06-25 05:46:48.034: V/####(1842): TFH BANNER1
    06-25 05:46:48.044: V/test2(1842): testhere
    06-25 05:46:48.044: V/test3(1842): testhere
    06-25 05:46:48.064: V/####(1842): TFH BANNER2
    06-25 05:46:48.144: V/####(1842): TFH BANNER3
    06-25 05:46:48.274: I/Choreographer(1842): Skipped 1086 frames!  The application may be doing too much work on its main thread.
    06-25 05:46:48.674: I/ImageCache(1842): Disk cache initialized
    06-25 05:46:48.854: I/Choreographer(1842): Skipped 205 frames!  The application may be doing too much work on its main thread.
    06-25 05:46:49.164: V/####(1842): TFH BANNER1
    06-25 05:46:49.254: V/test2(1842): testhere
    06-25 05:46:49.254: V/test3(1842): testhere
    06-25 05:46:49.264: V/####(1842): TFH BANNER2
    06-25 05:46:49.324: V/####(1842): TFH BANNER3
    06-25 05:46:49.324: V/####(1842): TFH BANNER4
    06-25 05:46:49.374: V/####(1842): TFH BANNER1
    06-25 05:46:49.434: V/test2(1842): testhere
    06-25 05:46:49.434: V/test3(1842): testhere
    06-25 05:46:49.434: I/ImageWorker(1842): cancelPotentialWork - cancelled work for http://tfhapp.fathershouse.in/banner-gallery/tfh-banner1-large-1.jpg
    

    下面我发布了与SplashActivity相关的整个核心。

    SplashActivity.java:

    public class SplashActivity extends Activity {
    
        public int currentimageindex = 0;
        Timer timer;
        TimerTask task;
        ImageView slidingimage;
        int count = 0;
        private int[] IMAGE_IDS = { R.drawable.spl1, R.drawable.spl2,
                R.drawable.spl3 };
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_splash);
            final Handler mHandler = new Handler();
    
            // Create runnable for posting
            final Runnable mUpdateResults = new Runnable() {
                public void run() {
    
                    AnimateandSlideShow();
    
                }
            };
    
            int delay = 1000; // delay for 1 sec.
    
            int period = 8000; // repeat every 4 sec.
    
            Timer timer = new Timer();
    
            timer.scheduleAtFixedRate(new TimerTask() {
    
                public void run() {
    
                    mHandler.post(mUpdateResults);
                    count = count + 1;
    
                    Log.v("test", count + "");
                    if (count >3) {
    
                        Intent i=new Intent(SplashActivity.this,HomeActivity.class);
                        startActivity(i);
                        count=0;  
                    }
                }
            }, delay, period);
    
        }
    
        //
        // public void onClick(View v) {
        //
        // finish();
        // android.os.Process.killProcess(android.os.Process.myPid());
        // }
    
        /**
         * Helper method to start the animation on the splash screen
         */
        private void AnimateandSlideShow() {
    
            slidingimage = (ImageView) findViewById(R.id.ImageView3_Left);
            slidingimage.setImageResource(IMAGE_IDS[currentimageindex
                    % IMAGE_IDS.length]);
    
            currentimageindex++;
    
            Animation rotateimage = AnimationUtils.loadAnimation(this,
                    R.anim.custom_anim);
    
            slidingimage.startAnimation(rotateimage);
    
            // Log.v("test","animation slide");
    
        }
    
    }  
    

    layout_splash.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/ImageView3_Left"
              android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal" />
    
    
    </LinearLayout>  
    

    custom_anim.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <rotate
            android:fromDegrees="0"
            android:toDegrees="360"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="2000" />
        <alpha
            android:fromAlpha="0.0"
            android:toAlpha="1.0"
            android:duration="2000">
        </alpha>
        <scale
            android:pivotX="50%"
            android:pivotY="50%"
            android:fromXScale=".1"
            android:fromYScale=".1"
            android:toXScale="1.0"
            android:toYScale="1.0"
            android:duration="2000" />
    
    </set>
    

    fade_in.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <alpha
            android:fromAlpha="0.0"
            android:toAlpha="1.0"
            android:duration="2500">
        </alpha>
    </set>
    

    fade_in2.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shareInterpolator="false">
        <alpha
            android:fromAlpha="0.0"
            android:toAlpha="1.0"
            android:duration="2500"
            android:startOffset="2500">
        </alpha>
    </set>
    

    我不知道如何解决这些问题。如果你知道如何解决这些问题,任何人都可以帮助我。谢谢。

1 个答案:

答案 0 :(得分:2)

请参考此代码段以解决您的问题..

package com.example.splashanimation;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity {

    public int currentimageindex = 0;
    Timer timer;
    TimerTask task;
    ImageView slidingimage;
    int count = 0;
    private int[] IMAGE_IDS = { R.drawable.img1, R.drawable.img2, R.drawable.img3 };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Handler mHandler = new Handler();

        // Create runnable for posting
        final Runnable mUpdateResults = new Runnable() {
            public void run() {

                AnimateandSlideShow();

            }
        };

        int delay = 500; // delay for 1 sec.

        int period = 4000; // repeat every 4 sec.

        final Timer timer = new Timer();

        timer.scheduleAtFixedRate(new TimerTask() {

            public void run() {

                mHandler.post(mUpdateResults);
                count = count + 1;

                Log.v("test", count + "");
                if (count > 3) {
                    finish();
                    Intent i = new Intent(MainActivity.this, HomeActivity.class);
                    startActivity(i);
                    count = 0;
                    timer.cancel();
                }
            }
        }, 0, period);

    }

    /**
     * Helper method to start the animation on the splash screen
     */
    private void AnimateandSlideShow() {

        slidingimage = (ImageView) findViewById(R.id.ImageView3_Left);
        slidingimage.setImageResource(IMAGE_IDS[currentimageindex % IMAGE_IDS.length]);

        currentimageindex++;

        Animation rotateimage = AnimationUtils.loadAnimation(this, R.anim.custom_anim);

        slidingimage.startAnimation(rotateimage);

    }

}