使用DrawerLayout+ActionBar實現側拉效果
阿新 • • 發佈:2018-11-05
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.app.Fragment;
import android.widget.ListView;
import java.util.ArrayList;
/*
1.完成專案XML佈局 初始化控制元件
a.根佈局 不在是LinearLayout 而是 DrawerLayout
b.寫兩個直接的子控制元件 linearLayout Fragment
c.TabLayout(依賴) 和 viewpager
2.初始化 ActionBar 和ToolBar一樣的存在 a.獲取一個ActionBar物件 b.給ActionBar物件設定圖片 c .ActionBar關聯DrawerLayout 設定drawerlayout的id d.DrawerLayout關聯ActionBar 3.初始化Viewpager a.建立一個裝Fragement的集合 b.建立Fragment,把Fragment新增到容器中 c.建立ViewPager 的介面卡寫其邏輯 4. 兩兩之間的相互關聯 a.tabLayout 建立指示器 b.Tablayout與Viewpager相關聯 c.給TabLayout指示器設定文字
*/
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout; private TabLayout tabLayout; private ViewPager viewPager; private ActionBarDrawerToggle toggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控制元件 initView(); //初始化Action Bar initActionBar(); //初始化viewpager initViewpager(); } //初始化控制元件 private void initView() { drawerLayout = findViewById(R.id.drawerlayout); tabLayout = findViewById(R.id.tab_layout); viewPager = findViewById(R.id.view); } //設定點選左上角 能夠彈出側邊選單 private void initActionBar() { //獲取一個ActionBar物件 ActionBar actionBar =getSupportActionBar(); //給做商檢一個圖片 4.0 以上 預設圖片 給true就可以直接使用 actionBar.setDisplayHomeAsUpEnabled(true); //有一個類提供了繫結DrawerLayout功能 在 values資料夾下 修改Strings.xml修改 //c .ActionBar關聯DrawerLayout toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close); //c .DrawerLayout關聯ActionBar 同步 toggle.syncState(); drawerLayout.addDrawerListener(toggle); } //設定左上角的按鈕具備點選事件 @Override public boolean onOptionsItemSelected(MenuItem item) { if(toggle.onOptionsItemSelected(item)){ return true; //設定為true } return super.onOptionsItemSelected(item); } //初始化 DrawerLayout ViewPager Fragment private void initViewpager() { ArrayList<Fragment> fragments =new ArrayList<>(); fragments.add(new VRPanoFragment()); fragments.add(new VrVideoFragment()); //建立介面卡 MyPagerAdapter adapter = new MyPagerAdapter(getFragmentManager()); //新增集合 adapter.setFragments(fragments); //新增介面卡 viewPager.setAdapter(adapter); //tablayout指示器有幾個就建立幾個 tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab()); //使用指示器tablayout和viewpager tabLayout.setupWithViewPager(viewPager); //兩者關聯 //給tablayout指示器設定文字 萬物從0開始 tabLayout.getTabAt(0).setText("開心果"); tabLayout.getTabAt(1).setText("葡萄樹"); }
}