打开活动时如何停止“跳跃效果”?

时间:2019-07-19 15:37:45

标签: java android performance

我有三个以上的活动,而其他活动的过渡非常好,但是每次我导航到其中一个包含以下代码的活动似乎都在跳跃。

我已经重写了动画类,但是跳转仍然持续,我该如何解决?我的Ui线程超载了吗?

  public class ListActivity extends AppCompatActivity implements 
  RecyclerViewAdapter.OnItemClickListener {

RecyclerViewAdapter recyclerViewAdapter;
RecyclerView recyclerView;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference dbRef = db.collection("Archives");
Context context;
FloatingActionButton fab;
Item clickedItem;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

    recyclerView = findViewById(R.id.recyclerView);
    fab = findViewById(R.id.fab);

    Toolbar toolbar = findViewById(R.id.toolbar);

    if (toolbar != null) {
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
    }
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
            overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
        }
    });
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(ListActivity.this, 
    EnterDataActivity.class);
            startActivity(intent);
        }
    });

    setUpAdapter();
 }

 private void setUpAdapter() {

    Query query = dbRef.orderBy("fname", Query.Direction.DESCENDING);

    FirestoreRecyclerOptions<Item> options = new 
 FirestoreRecyclerOptions.Builder<Item>()
            .setQuery(query, Item.class)
            .build();
    recyclerViewAdapter = new RecyclerViewAdapter(options, 
   ListActivity.this);
    recyclerViewAdapter.notifyDataSetChanged();
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(context));
    recyclerView.setAdapter(recyclerViewAdapter);
    recyclerViewAdapter.setOnItemClickListener(ListActivity.this);
 }

  @Override
 public void onStart() {
    super.onStart();
    recyclerViewAdapter.startListening();
 }

 @Override
 public void onStop() {
    super.onStop();
    recyclerViewAdapter.stopListening();
 }


@Override public void onItemClick(DocumentSnapshot documentSnapshot, int 
position) {

    clickedItem = documentSnapshot.toObject(Item.class);
    clickedItem.setId((documentSnapshot.getId()));

    Intent intent = new Intent(ListActivity.this, DetailActivity.class);

    intent.putExtra(First_Name, clickedItem.getFname());
    intent.putExtra(Middle_Name, clickedItem.getMname());
    intent.putExtra(Sur_Name, clickedItem.getSname());
    intent.putExtra(Email, clickedItem.getEmail());
    intent.putExtra(phone, clickedItem.getPhone());
    intent.putExtra(city, clickedItem.getCity());
    intent.putExtra(parents_Name, clickedItem.getParentsName());
    intent.putExtra(parents_Phone, clickedItem.getParentsContact());
    intent.putExtra(dob, clickedItem.getDob());
    intent.putExtra(emergency, clickedItem.getEmergency());
    intent.putExtra(profile_Picture, clickedItem.getProfilePicture());

    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
    startActivityForResult(intent, 45);


}

 @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable 
  Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if ((requestCode == 45 && resultCode == RESULT_OK && data != null)) {
        String fname = data.getStringExtra(First_Name);
        String mname = data.getStringExtra(Middle_Name);
        String sname = data.getStringExtra(Sur_Name);
        String email = data.getStringExtra(Email);
        String Phone = data.getStringExtra(phone);
        String City = data.getStringExtra(city);
        String pname = data.getStringExtra(parents_Name);
        String pphone = data.getStringExtra(parents_Phone);
        String Dob = data.getStringExtra(dob);
        String Emergency = data.getStringExtra(emergency);
        String profile = data.getStringExtra(profile_Picture);

        Item items = new Item(fname, mname, sname, email, Phone, City, 
    pname, pphone, Dob, Emergency, profile);

        db.collection("Archives").document(clickedItem.getId())
                .set(items).addOnSuccessListener(new 
       OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {

                Toast.makeText(ListActivity.this, "Updated Successfully", 
        Toast.LENGTH_LONG).show();


            }
        });
      }
     }
   }

1 个答案:

答案 0 :(得分:0)

overridePendingTransition

Activity文档说:

  

startActivity (android.content.Intent)或 finish ()之一后立即调用 ,以指定明确的过渡动画接下来执行。

因此至少在其他任何地方调用overridePendingTransition都无济于事。删除ListActivity#onCreate之后的setContentView中的此类呼叫,并将其放在startActivitystartActivityForResult的下一行。