zoukankan      html  css  js  c++  java
  • 毕业设计:主界面(ViewPager + FragmentPagerAdapter)

    一、主要思路

          应用程序的主界面包含三个部分:顶部标题栏、底部标识栏和中间的内容部分。顶部标题栏内容基本不变,用于显示当前模块或者整个应用的名称;底部既能标识出当前Page,又能通过触发ImageButton来更改当前Page,效果和微信相同。最重要的是中间的内容部分,总的来说它是一个ViewPager,但是和传统的ViewPager不同,它的每一个Page包含的都是一个Fragment而不是简单的View。具体参照http://blog.csdn.net/lmj623565791/article/details/24740977。这里使用这个方案是因为我的每一个Page都有相对独立的功能,在以后的设计当中我希望能分开来实现每个模块,让整个应用程序结构更清晰。

    二、activity_main

          包含顶部栏、底部栏和中间的ViewPager,使用线性布局。这里需要注意的是,要将ViewPager设置为刚好占用除顶部、底部的剩下的区域,可以将android:layout_height设置为”0dp”,将android:layout_weight设置为”1”。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#eee"
        android:orientation="vertical" >
    
        <include layout="@layout/title_bar" />
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >
        </android.support.v4.view.ViewPager>
    
        <include layout="@layout/bottom_bar" />
    
    </LinearLayout>

    三、Fragment的布局和Java代码

          布局没有什么好注意的。代码部分是新建一个(或者几个)类,继承Fragment,在方法onCreateView()中用inflater找出之前建立好的布局文件,将其返回。之后在MainActivity中需要实例化这几个对象,放到一个List里,然后绑定这个List、FragmentPagerAdapter和ViewPager,具体代码后面给出。

    Fragment布局文件,另外几个类似:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:gravity="center"
            android:layout_weight="1"
            android:text="this is the second tab!"
            android:textColor="#000000"
            android:textSize="30sp" />
    
    </LinearLayout>

    Fragment代码,另外几个类似:

    package com.example.vcloud_3_25;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class ShareFragment extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            return inflater.inflate(R.layout.main_tab_2, container, false);
        }
        
    }

    四、bottom_bar.xml

          注意布局嵌套。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/tab_bottom_bar"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:layout_gravity="bottom"
        android:background="#f5f5f5" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="55dp"
            android:orientation="horizontal" >
    
            <LinearLayout
                android:id="@+id/bottom_home"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/bottom_home_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/home_clicked" />
    
                <TextView
                    android:id="@+id/bottom_home_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="云盘"
                    android:textColor="#696969" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/bottom_share"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/bottom_share_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/friends_normal" />
    
                <TextView
                    android:id="@+id/bottom_share_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="分享"
                    android:textColor="#696969" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/bottom_task"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/bottom_task_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/download_normal" />
    
                <TextView
                    android:id="@+id/bottom_task_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="任务"
                    android:textColor="#696969" />
            </LinearLayout>
    
            <LinearLayout
                android:id="@+id/bottom_settings"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:descendantFocusability="beforeDescendants"
                android:gravity="center"
                android:orientation="vertical" >
    
                <ImageButton
                    android:id="@+id/bottom_settings_icon"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#0000"
                    android:clickable="false"
                    android:src="@drawable/settings_normal" />
    
                <TextView
                    android:id="@+id/bottom_settings_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="设置"
                    android:textColor="#696969" />
            </LinearLayout>
        </LinearLayout>
    
    </RelativeLayout>

    四、MainActivity

    package com.example.vcloud_3_25;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;
    
    public class MainActivity extends FragmentActivity implements OnClickListener {
    
        private LinearLayout mHome;
        private LinearLayout mShare;
        private LinearLayout mTask;
        private LinearLayout mSettings;
    
        private ImageButton mHomeIcon;
        private ImageButton mShareIcon;
        private ImageButton mTaskIcon;
        private ImageButton mSettingsIcon;
    
        private Fragment mHomeFragment;
        private Fragment mShareFragment;
        private Fragment mTaskFragment;
        private Fragment mSettingsFragment;
    
        private ViewPager mViewPager;
        private FragmentPagerAdapter mAdapter;
        private List<Fragment> mFragments;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
    
            initView();
            initEvents();
        }
    
        private void initEvents() {
            mHomeIcon.setOnClickListener(this);
            mShareIcon.setOnClickListener(this);
            mTaskIcon.setOnClickListener(this);
            mSettingsIcon.setOnClickListener(this);
    
            mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
                @Override
                public void onPageSelected(int pos) {
                    setSelect(pos);
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
    
                }
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
    
                }
            });
    
            setSelect(0);
        }
    
        private void initView() {
            mHome = (LinearLayout) findViewById(R.id.bottom_home);
            mShare = (LinearLayout) findViewById(R.id.bottom_share);
            mTask = (LinearLayout) findViewById(R.id.bottom_task);
            mSettings = (LinearLayout) findViewById(R.id.bottom_settings);
    
            mHomeIcon = (ImageButton) findViewById(R.id.bottom_home_icon);
            mShareIcon = (ImageButton) findViewById(R.id.bottom_share_icon);
            mTaskIcon = (ImageButton) findViewById(R.id.bottom_task_icon);
            mSettingsIcon = (ImageButton) findViewById(R.id.bottom_settings_icon);
    
            mHomeFragment = new HomeFragment();
            mShareFragment = new ShareFragment();
            mTaskFragment = new TaskFragment();
            mSettingsFragment = new SettingsFragment();
    
            mViewPager = (ViewPager) findViewById(R.id.viewpager);
    
            mFragments = new ArrayList<Fragment>();
    
            mFragments.add(mHomeFragment);
            mFragments.add(mShareFragment);
            mFragments.add(mTaskFragment);
            mFragments.add(mSettingsFragment);
    
            mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
    
                @Override
                public int getCount() {
                    return mFragments.size();
                }
    
                @Override
                public Fragment getItem(int pos) {
                    return mFragments.get(pos);
                }
            };
    
            mViewPager.setAdapter(mAdapter);
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
            case R.id.bottom_home_icon:
                setSelect(0);
                break;
            case R.id.bottom_share_icon:
                setSelect(1);
                break;
            case R.id.bottom_task_icon:
                setSelect(2);
                break;
            case R.id.bottom_settings_icon:
                setSelect(3);
                break;
            }
        }
    
        private void resetBottom() {
            mHomeIcon.setImageResource(R.drawable.home_normal);
            mShareIcon.setImageResource(R.drawable.friends_normal);
            mTaskIcon.setImageResource(R.drawable.download_normal);
            mSettingsIcon.setImageResource(R.drawable.settings_normal);
        }
    
        private void setSelect(int i) {
            resetBottom();
            switch (i) {
            case 0:
                mHomeIcon.setImageResource(R.drawable.home_clicked);
                break;
            case 1:
                mShareIcon.setImageResource(R.drawable.friends_clicked);
                break;
            case 2:
                mTaskIcon.setImageResource(R.drawable.download_clicked);
                break;
            case 3:
                mSettingsIcon.setImageResource(R.drawable.settings_onclicked);
                break;
            }
            mViewPager.setCurrentItem(i);
        }
    }

    六、图片资源来源

    http://www.easyicon.net/

  • 相关阅读:
    Swift语言指南(三)--语言基础之整数和浮点数
    Swift语言指南(二)--语言基础之注释和分号
    Swift语言指南(一)--语言基础之常量和变量
    Swift中文教程(七)--协议,扩展和泛型
    Swift中文教程(六)--枚举和结构
    Swift中文教程(五)--对象和类
    Swift中文教程(四)--函数与闭包
    集合
    java中的集合
    java中集合的使用
  • 原文地址:https://www.cnblogs.com/viaduct/p/6649932.html
Copyright © 2011-2022 走看看