Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新启动Android活动后未显示动画_Java_Android_Android Studio_Android Animation - Fatal编程技术网

Java 重新启动Android活动后未显示动画

Java 重新启动Android活动后未显示动画,java,android,android-studio,android-animation,Java,Android,Android Studio,Android Animation,我会尽我所能在没有视频的情况下解释我的问题 我有一个登录活动,成功登录后,EditText和Button字段淡出,“登录”文本视图淡入(使用Facebook Shimmer)。这很有效!!但是,成功登录后,我们会收到一个空白活动(仍然可以)。现在,我重写了back按钮,这样当按下back按钮时,用户将被迫再次登录。我的问题是用户此时点击登录按钮。编辑文本和按钮元素很好地淡出,但“登录”文本视图从不淡入 下面是一些图片示例。我还将发布LoginActivity.class的源代码,如果您想下载该项

我会尽我所能在没有视频的情况下解释我的问题

我有一个登录活动,成功登录后,EditText和Button字段淡出,“登录”文本视图淡入(使用Facebook Shimmer)。这很有效!!但是,成功登录后,我们会收到一个空白活动(仍然可以)。现在,我重写了back按钮,这样当按下back按钮时,用户将被迫再次登录。我的问题是用户此时点击登录按钮。编辑文本和按钮元素很好地淡出,但“登录”文本视图从不淡入

下面是一些图片示例。我还将发布LoginActivity.class的源代码,如果您想下载该项目,请访问:
git@github.com:fbgrecojr/Android应用程序登录活动模板.git

如果下载该项目,用户名:testuser和密码:testpass将起作用

图像:

  • 初始登录(工作)
  • 按“后退”按钮,然后再次登录后尝试登录(我将其改写以重新启动意图)
  • LoginActivity.class

    package com.projects.fbgrecojr.logintemplate.UI;
    
    import android.content.Context;
    import android.content.Intent;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.AsyncTask;
    import android.os.Handler;
    import android.support.design.widget.TextInputLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.animation.AccelerateInterpolator;
    import android.view.animation.AlphaAnimation;
    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.view.animation.DecelerateInterpolator;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    import android.widget.Toast;
    
    import com.facebook.shimmer.ShimmerFrameLayout;
    import com.projects.fbgrecojr.logintemplate.HTTPManager.HttpManager;
    import com.projects.fbgrecojr.logintemplate.HTTPManager.RequestPackage;
    import com.projects.fbgrecojr.logintemplate.Parser.JSONParser;
    import com.projects.fbgrecojr.logintemplate.R;
    import com.projects.fbgrecojr.logintemplate.Session.Session;
    import com.projects.fbgrecojr.logintemplate.Structures.User;
    import com.projects.fbgrecojr.logintemplate.Utility.UTILITY;
    
    
    /**
     * An example full-screen activity that shows and hides the system UI (i.e.
     * status bar and navigation/system bar) with user interaction.
     */
    public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
    
        private EditText userName, password;
        private Button login;
        private RelativeLayout image;
        private LinearLayout button, belowPic;
        private Animation fadeInImage, fadeInButton, bottomUp, fadeOut;
        private TextInputLayout inputLayoutName,inputLayoutPassword;
        private ViewGroup hiddenPanel;
        private ShimmerFrameLayout container, loggingIn;
        private static final int SECOND = 1000;
        private static final int HALF_SECOND = 500;
        private static final int QUARTER_SECOND = 250;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
    
            //INITIALIZE ANIMATION ITEMS
            fadeInImage = new AlphaAnimation(0, 1);
            fadeInButton = new AlphaAnimation(0, 1);
            fadeOut = new AlphaAnimation(1.0f,0.0f);
            bottomUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bottom_up_animation);
            fadeInImage.setInterpolator(new AccelerateInterpolator()); //and this
            bottomUp.setInterpolator(new DecelerateInterpolator());
    
            //GET UI ELEMENTS
            userName = (EditText) findViewById(R.id.userName);
            password = (EditText) findViewById(R.id.password);
            login = (Button) findViewById(R.id.login);
            image = (RelativeLayout) findViewById(R.id.image);
            button = (LinearLayout) findViewById(R.id.button);
            container = (ShimmerFrameLayout) findViewById(R.id.shimmer);
            belowPic = (LinearLayout) findViewById(R.id.below_picture);
            loggingIn = (com.facebook.shimmer.ShimmerFrameLayout) findViewById(R.id.login_shimmer);
            hiddenPanel = (ViewGroup)findViewById(R.id.input);
            inputLayoutName = (TextInputLayout) findViewById(R.id.text_input_username);
            inputLayoutPassword = (TextInputLayout) findViewById(R.id.text_input_password);
    
            //SET UI PROPERTIES
            loggingIn.setVisibility(View.INVISIBLE);
            userName.setCursorVisible(false);
            password.setCursorVisible(false);
            password.setHint("Password");
            userName.setHint("Username");
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    userName.setCursorVisible(true);
                    password.setCursorVisible(true);
                    userName.requestFocus();
                }
            }, LoginActivity.SECOND * 3);
    
            //ANIMATIONS
            fadeInImage.setDuration(SECOND * 3);
            fadeOut.setStartOffset(SECOND);
            fadeOut.setDuration(SECOND);
            image.setAnimation(fadeInImage);
            fadeInButton.setStartOffset(SECOND + HALF_SECOND + QUARTER_SECOND);
            fadeInButton.setDuration(SECOND * 2);
            button.setAnimation(fadeInButton);
            hiddenPanel.startAnimation(bottomUp);
            hiddenPanel.setVisibility(View.VISIBLE);
            container.setDuration(SECOND * 2 + QUARTER_SECOND);
            container.setRepeatDelay(QUARTER_SECOND);
            container.setIntensity((float) 0.15);
            container.setBaseAlpha((float) 0.75);
            container.setFadingEdgeLength(3);
            container.setDropoff((float) 0.40);
            container.startShimmerAnimation();
    
            //ON CLICK LISTENERS
            login.setOnClickListener(this);
        }
    
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.login:
    
                    if(getUserName().getText().toString().equals("") || getUserName().getText().toString().equals(" ")) {
                        inputLayoutName.setError("enter username");
                    }else if(getPassword().getText().toString().equals("") || getPassword().getText().toString().equals(" ")){
                        inputLayoutPassword.setError("enter password");
                    }else{
                        //webservice
                        if (UTILITY.isOnline(getApplicationContext())) {
                            RequestPackage p = new RequestPackage();
                            p.setMethod("GET");
                            p.setUri(UTILITY.UBUNTU_SERVER_URL);
                            p.setParam("query", "user");
                            p.setParam("username", getUserName().getText().toString());
                            new WebserviceCallOne().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, p);
                        } else {
                            Toast.makeText(getApplicationContext(), "you are not connected to the internet", Toast.LENGTH_LONG).show();
                        }
                    }
                    break;
            }
        }
    
        private void animateExit() {
            //fade out annimation
            belowPic.startAnimation(fadeOut);
            belowPic.setVisibility(View.INVISIBLE);
            fadeInImage.setStartOffset(SECOND * 2);
            fadeInImage.setDuration(HALF_SECOND);
            loggingIn.startAnimation(fadeInImage);
            loggingIn.setVisibility(View.VISIBLE);
            loggingIn.setDuration(SECOND);
            loggingIn.startShimmerAnimation();
        }
    
        public EditText getPassword() {
            return password;
        }
    
        public EditText getUserName() {
            return userName;
        }
    
        private class WebserviceCallOne extends AsyncTask<RequestPackage, String, User> {
            @Override
            protected User doInBackground(RequestPackage... params) {
                String content = HttpManager.getData(params[0]);
                return JSONParser.parseUserFeed(content);
            }
    
            @Override
            protected void onPostExecute(User s) {
                Session.setCurrentUser(s);
                //if null, error stacktrace will print to the log. This is expected!!
                if(Session.getCurrentUser() == null){ //username was incorrect
                    inputLayoutName.setError("username does not exist");
                }else{ //check password
                    if(getPassword().getText().toString().equals(s.getPassword())){ //passwords match
                        animateExit();
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                startActivity(new Intent(getApplicationContext(), MainActivity.class));
                            }
                        },LoginActivity.SECOND * 4);
                    }else{
                        inputLayoutPassword.setError("password incorrect");
                    }
                }
            }
        }
    }
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /**
         * Take care of popping the fragment back stack or finishing the activity
         * as appropriate.
         */
        @Override
        public void onBackPressed() {
            startActivity(new Intent(this, LoginActivity.class));
        }
    }
    

    您必须调用animateExit();onResume方法中的代码

       @Override
        public void onResume() {
          super.onResume();
          animateExit();
        } 
    
  • 在活动中重写onResume()

    尝试在onresume中启动动画

  • 在活动中重写onPause()

    尝试在onPause中停止动画


  • 希望这有帮助:)

    我将尝试此方法,但是在调试时,会在animateExit()方法中执行onCreate方法。成功登录时调用它。引用私有类WebServiceCallOneAlso的onPostExecute()方法,将代码放入onResume并不能解决问题,我希望这样做,因为我在android生命周期方法和onCreate()和onResume()中重写并放入toast调用始终在初始实例和单击“上一步”生成的实例中调用button@Overridepublic void onResume(){super.onResume();animateExit();}因为您在单击backbutton后没有单击WebService调用