国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Table和ViewPager混合使用小結

2019-11-08 02:34:10
字體:
來源:轉載
供稿:網友

本章節講述Table和ViewPager混合使用以達到滑動頁面的效果。

代碼就不詳細介紹了,里面每一句都有注釋。

1.在布局文件中添加相應的控件:TabLayout和ViewPager

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:showIn="@layout/activity_main" tools:context=".MainActivity">    <!--布局頁面寫入兩個控件TabLayout,ViewPager將兩個控件相結合-->    <android.support.design.widget.TabLayout        android:id="@+id/tab_layout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        />    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="match_parent"        android:layout_height="fill_parent"        android:layout_below="@id/tab_layout"        /></RelativeLayout>

2.主函數程序

public class MainActivity extends AppCompatActivity {    /*界面的數量和各自界面名稱設置*/    PRivate static final int NUMBER_OF_FRAGMENTS = 4;/*四個部分*/    private static final int FRAGMENT_INDEXT_SETTING = 0;/*配置部分*/    private static final int FRAGMENT_INDEXT_LOGGER = 1;/*數據記錄部分*/    private static final int FRAGMENT_INDEXT_OUTDOORMAP = 2;/*室外地圖顯示部分*/    private static final int FRAGMENT_INDEXT_INDOORMAP = 3;/*室內定位部分*/    /*定義一個包含權限的字符串數組,將需要的權限全部寫到數組中*/    private static final String[] REQUIRED_PERMISSIONS = {            Manifest.permission.access_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE    };    private static final int LOCATION_REQUEST_ID = 1;/*方法地一個參數,未解決*/    private Fragment[] mFragments;/*用于存放要使用的Fragment*/    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)                        .setAction("Action", null).show();            }        });        requestPermitionAndSetupFragment(this);    }    /*    * 用于選擇使用當前使用哪一個頁面的適配器類    * */    public class ViewPagerAdapter extends FragmentStatePagerAdapter{        /*下面這三個方法是必須要覆寫的*/        /*構造函數*/        public ViewPagerAdapter(FragmentManager fm) {            super(fm);        }        /*獲得頁面的數量*/        @Override        public int getCount() {            return NUMBER_OF_FRAGMENTS;        }        /*通過這個方法得到當前頁面的位置*/        @Override        public Fragment getItem(int position) {            switch(position){                case FRAGMENT_INDEXT_SETTING:                    return mFragments[FRAGMENT_INDEXT_SETTING];/*返回設置界面*/                case FRAGMENT_INDEXT_LOGGER:                    return mFragments[FRAGMENT_INDEXT_LOGGER];/*返回記錄數據界面*/                case FRAGMENT_INDEXT_OUTDOORMAP:                    return mFragments[FRAGMENT_INDEXT_OUTDOORMAP];/*返回室外定位地圖界面*/                case FRAGMENT_INDEXT_INDOORMAP:                    return mFragments[FRAGMENT_INDEXT_INDOORMAP];/*返回室內定位地圖界面*/                default:                    throw new IllegalArgumentException("Invalid section: " + position);/*拋出錯誤*/            }        }        /*獲得標題*/        @Override        public CharSequence getPageTitle(int position) {            switch(position){                case FRAGMENT_INDEXT_SETTING:                    return "配置";/*返回設置界面*/                case FRAGMENT_INDEXT_LOGGER:                    return "數據記錄";/*返回記錄數據界面*/                case FRAGMENT_INDEXT_OUTDOORMAP:                    return "室外定位";/*返回室外定位地圖界面*/                case FRAGMENT_INDEXT_INDOORMAP:                    return "室內定位";/*返回室內定位地圖界面*/                default:                    throw new IllegalArgumentException("Invalid section: " + position);/*拋出錯誤*/            }        }    }    /*    * 啟動Fragment    * */    private void setupFragment(){        mFragments = new Fragment[NUMBER_OF_FRAGMENTS];/*設置Fragment的數量*/        /*SettingFragment設置*/        SettingFragment settingFragment = new SettingFragment();        mFragments[FRAGMENT_INDEXT_SETTING] = settingFragment;        /*        * 以下設置使用到的Fragment        * */        /*LoggerFragment設置*/        LoggerFragment loggerFragment = new LoggerFragment();        mFragments[FRAGMENT_INDEXT_LOGGER] = loggerFragment;        /*OutdoorMapFragment設置*/        OutdoorMapFragment outdoorMapFragment = new OutdoorMapFragment();        mFragments[FRAGMENT_INDEXT_OUTDOORMAP] = outdoorMapFragment;        /*IndoorMapFragment設置*/        IndoorMapFragment indoorMapFragment = new IndoorMapFragment();        mFragments[FRAGMENT_INDEXT_INDOORMAP] = indoorMapFragment;        ViewPager viewPager = (ViewPager)findViewById(R.id.pager);/*創建ViewPager對象*/        viewPager.setOffscreenPageLimit(4);/*設置界面的頁數為4*/        ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());/*通過構造函數構造頁面適配器*/        viewPager.setAdapter(adapter);/*將ViewPager設置一個適配器PagerAdapter*/        TabLayout tabLayout = (TabLayout)findViewById(R.id.tab_layout);/*創建一個TabLayout類的對象*/        tabLayout.setupWithViewPager(viewPager);/*使用ViewPager啟動TabLayout*/        /*一旦TabLayout的位置發生改變就會添加一個TabLayout上的頁面選擇監聽器*/        tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));        /*無論頁面發生變化或則反卷都會添加一個頁面變化監聽器*/        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));    }    /*    * 查詢是否具有相應的權限    * */    private Boolean haspermission(Activity activity){        /*如果版本號小于Android6.0,不需要判斷,直接返回真*/        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M){            return true;        }        /*如果有任何一項權限沒有獲得就返回false*/        for(String p : REQUIRED_PERMISSIONS){            if(ContextCompat.checkSelfPermission(activity,p) != PackageManager.PERMISSION_GRANTED){                return false;            }        }        return true;    }    /*    * 查詢是否具有相應的權限以及啟動Fragment    * */    private void requestPermitionAndSetupFragment(final Activity activity){       /*如果獲得所有的權限,就直接啟動Fragment*/        if(hasPermission(activity)){            setupFragment();        }else{            ActivityCompat.requestPermissions(activity, REQUIRED_PERMISSIONS, LOCATION_REQUEST_ID);        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @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();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

3.結果圖

注意的問題:

這里需要注意的是Fragment和FragmentStatePagerAdapter要導入的包是

import android.app.Fragment;import android.app.FragmentManager;import android.support.v13.app.FragmentStatePagerAdapter;誤將TabLayout寫成TableLayout。


上一篇:圖書管理系統

下一篇:線段樹

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 西青区| 灵台县| 乐至县| 桂平市| 邯郸市| 富宁县| 巫溪县| 攀枝花市| 深州市| 桑植县| 洛宁县| 湟中县| 开江县| 石狮市| 马公市| 舞阳县| 正宁县| 姜堰市| 普安县| 剑川县| 商南县| 威宁| 青铜峡市| 翁牛特旗| 工布江达县| 金川县| 皮山县| 阿拉尔市| 三穗县| 合肥市| 高碑店市| 临沧市| 定襄县| 荣昌县| 乡宁县| 油尖旺区| 香港 | 丹江口市| 宁南县| 华池县|