【问题标题】:how to check if an application is killed during an animation in android如何检查应用程序是否在android中的动画期间被杀死
【发布时间】:2014-09-10 19:01:04
【问题描述】:

我必须制作一个以动画开头的应用程序,如果我们单击后退按钮,那么它应该返回到应用程序管理器。但是,如果您在该动画期间单击后退按钮,那么我在其中所做的事情就会消失到应用程序管理器,但在一两秒后第一页(出现此动画之后的那个)。

谁能帮忙??

这是动画..

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.load);
        im = (ImageView) findViewById(R.id.load_icon);
        rotate = AnimationUtils.loadAnimation(getApplicationContext(),
                R.anim.load_page);
        rotate.setInterpolator(new LinearInterpolator());
        im.startAnimation(rotate);
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                Intent nextPageIntent = new Intent(getApplicationContext(),
                        P1.class);
                startActivity(nextPageIntent);

            }
        }, 3000);

    }

【问题讨论】:

  • 表示要在动画停止后打开第一页?
  • 实际上先生,我认为如果我点击后退按钮,动画不会停止,而是在后台继续。
  • 实现 AnimationListener 将代码放入 onAnimationEnd 方法
  • 你能告诉我们,如果我们点击返回按钮,哪个函数会被调用,比如 onPause() onResume()...

标签: android


【解决方案1】:

第一页打开是因为您添加了 new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent nextPageIntent = new Intent(getApplicationContext(),
                    P1.class);
            startActivity(nextPageIntent);

        }
    }, 3000);

这会启动活动。要了解动画是否已停止,请使用 AnimationListener。此处有关动画侦听器的更多详细信息 Android, How to set animation listener for view group?

【讨论】:

    【解决方案2】:

    您只是将动画添加到一个图像视图,仅此而已,您没有对动画做任何事情。问题是,您在 3 秒后启动了一个线程来启动活动 P1。该线程仅启动 P1 活动。试试这个,尽量避免killProcess(),

    public class LauncherActivity extends Activity {
    
        private Handler mHandler;
        private Runnable mRunnable;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_launcher);
    
            mHandler = new Handler();
            mRunnable = new Runnable() {
                @Override
                public void run() {
                    Intent nextPageIntent = new Intent(getApplicationContext(),
                            XmlParserActivity.class);
                    startActivity(nextPageIntent);
                }
            };
    
            mHandler.postDelayed(mRunnable, 3000);
        }
       /* @Override
        public void onBackPressed() {
            super.onBackPressed();
            mHandler.removeCallbacks(mRunnable);
        }*/
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            mHandler.removeCallbacks(mRunnable);
       }
    }
    

    【讨论】:

      【解决方案3】:
      public void onBackPressed() {
          android.os.Process.killProcess(android.os.Process.myPid());
      }
      

      这就是答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 2020-10-23
        • 1970-01-01
        相关资源
        最近更新 更多