2016-03-19 14 views
0

ナビゲーションドロワーの順序に基づいてフラグメント間を上下にスライドできます。たとえば、最初のタブと4番目のタブを切り替える場合のFacebook Messengerの操作は、4番目のタブに移動する前に1番目、2番目、3番目のタブをすばやく通過する場合です。アプリケーションでこの種のアニメーションを複製するにはどうすればいいですか? (私は私がしかし、上下にスライドさせたい。)Android - ナビゲーション引出しのフラグメント間を移動するアニメーション

MainActivity.java

import android.content.pm.ActivityInfo; 
import android.os.Bundle; 
import android.support.v4.app.FragmentTransaction; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { 

    NavigationView navigationView = null; 
    Toolbar toolbar = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Disables Orientation throughout the entire application 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

     //Set the fragment initially 
     WelcomeFragment fragment = new WelcomeFragment(); 
     android.support.v4.app.FragmentTransaction fragmentTransaction = 
       getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.fragment_container, fragment); 
     fragmentTransaction.commit(); 

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

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     navigationView = (NavigationView) findViewById(R.id.nav_view); 

     //How to change elements in the header programatically 
     View headerView = navigationView.getHeaderView(0); 
     TextView emailText = (TextView) headerView.findViewById(R.id.description); 
     emailText.setText("Scouting Application"); 

     navigationView.setNavigationItemSelectedListener(this); 
    } //End of onCreate 

    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } //End of if statement 
    } //End of onBackPressed 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_welcome) { 
      //Set the fragment initially 
      WelcomeFragment fragment = new WelcomeFragment(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.fragment_container, fragment); 
      fragmentTransaction.commit(); 
      // Handle the camera action 
     } 
     else if (id == R.id.nav_facebook) { 
      FacebookFragment fragment = new FacebookFragment(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.fragment_container, fragment); 
      fragmentTransaction.commit(); 
     } 
     else if (id == R.id.nav_scout) { 
      //Set the fragment initially 
      ScoutFragment fragment = new ScoutFragment(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.fragment_container, fragment); 
      fragmentTransaction.commit(); 
     } 
     else if (id == R.id.nav_match) { 
      //Set the fragment initially 
      MatchFragment fragment = new MatchFragment(); 
      FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
      fragmentTransaction.replace(R.id.fragment_container, fragment); 
      fragmentTransaction.commit(); 
     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } //End of onNavigationItemSelected 
} //End of class 

答えて

0

アニメーションのそれらのようなものを作ることができるライブラリがあります。私は同じ種類のトランジション効果を探しており、これはあなたに役立つかもしれません。

FragmentTransactionExtended

ここにも別のコード:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

switch(id) { 
    // ... 

    // up button 
    case android.R.id.home: 
     finish(); 
     overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out); 
     return true; 
} 

return super.onOptionsItemSelected(item); 
} 
関連する問題