MotionLayout: MotionScene OnClick overrides setOnClickListener

后端 未结 7 1534
庸人自扰
庸人自扰 2021-02-13 19:02

I\'m just starting to play with MotionLayout. I have defined an activity layout using MotionLayout that uses a MotionScene to hide and sh

7条回答
  •  隐瞒了意图╮
    2021-02-13 19:14

    You can implement MotionLayout.TransitionListener to handler event when transition.

    public class LoginActivity extends AppCompatActivity implements MotionLayout.TransitionListener {
    private static final String TAG = "LoginActivity";
    private FirebaseAuth mAuth;
    private LoginLayoutBinding binding;
    
    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = LoginLayoutBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
    
        // initialize the FirebaseAuth instance.
        mAuth = FirebaseAuth.getInstance();
        binding.getRoot().addTransitionListener(this);
    }
    
    
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
    private void updateUI(FirebaseUser currentUser) {
        hideProgressBar();
        if (currentUser != null) {
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }
    }
    
    private void hideProgressBar() {
        binding.progressBar2.setVisibility(View.GONE);
    }
    
    private void createAccount(String email, String password) {
        mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d(TAG, "createUserWithEmail:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w(TAG, "createUserWithEmail:failure", task.getException());
                            Toast.makeText(LoginActivity.this, "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();
                            updateUI(null);
                        }
                    }
                });
    }
    
    private void signIn(String email, String password) {
        mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d(TAG, "signInWithEmail:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w(TAG, "signInWithEmail:failure", task.getException());
                            Toast.makeText(LoginActivity.this, "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();
                            updateUI(null);
                        }
                    }
                });
    }
    
    
    @Override
    public void onTransitionStarted(MotionLayout motionLayout, int startId, int endId) {
    
    }
    
    @Override
    public void onTransitionChange(MotionLayout motionLayout, int startId, int endId, float progress) {
    
    }
    
    @Override
    public void onTransitionCompleted(MotionLayout motionLayout, int currentId) {
        if (currentId==R.id.end){
            binding.btnLogin.setText(R.string.sign_up);
            binding.textView3.setEnabled(false);
            binding.textView2.setEnabled(true);
        }else {
            binding.btnLogin.setText(R.string.login);
            binding.textView2.setEnabled(false);
            binding.textView3.setEnabled(true);
        }
    
    }
    
    @Override
    public void onTransitionTrigger(MotionLayout motionLayout, int triggerId, boolean positive, float progress) {
    
    }
    

    }

提交回复
热议问题