Android學習0906(ViewPager,fragment碎片)

ViewPager

ViewPager實現的是佈局之間滑動的效果,因爲Viewpager是繼承於v4.support jar包的,因此需要導入包,Android Studio的導包的具體步驟如下:File->Project Structure->Modules->app->Dependencies

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

首先要在XML中寫入Viewpager,

       <android.support.v4.view.ViewPager
            android:id="@+id/pagerview"
            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
         ></android.support.v4.view.ViewPager>    

activity_pagerview.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v4.view.ViewPager
            android:id="@+id/pagerview"
            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
         ></android.support.v4.view.ViewPager>
        <LinearLayout
            android:id="@+id/viewGroup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="40dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
        </LinearLayout>
    </RelativeLayout>
</FrameLayout>

然後寫三個界面

activity_pager_image.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/image_wa"/>
</LinearLayout>

activtiy_pager_text.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"

    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/grawgreen"
        android:text="我是第二個界面"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/iamgeziwang"/>
</LinearLayout>

activity_pager_button.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <Button
        android:id="@+id/button_pagerview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是第三個界面的按鈕"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/jie2"/>
</LinearLayout>

因爲viewpager也需要adapter來設置當前的加載頁數和預加載的佈局
PagerAdapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    @Override
    public int getCount() {
        return views.size();//得到頁卡的頁數
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(views.get(position));//加載頁卡
        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      //  super.destroyItem(container, position, object);
       container.removeView(views.get(position));//刪除頁卡
    }
}

ViewPagerActivity.java

package com.example.administrator.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/6.
 */
public class ViewPagerActivity extends Activity{
    private List<View> views;
    private ViewPager mViewPager;
    private LayoutInflater mInflater;
    private ViewGroup mViewGroup;
    private ViewpagerAdapter mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        mViewPager= (ViewPager) findViewById(R.id.viewpager);
        mInflater=getLayoutInflater();
        views=new ArrayList<View>();
        views.add(mInflater.inflate(R.layout.activity_pager_image,null));
        views.add(mInflater.inflate(R.layout.activity_pager_button,null));
        views.add(mInflater.inflate(R.layout.activity_pager_text,null));
        mAdapter=new ViewpagerAdapter(views);
        mViewPager.setAdapter(mAdapter);
    }
}

這裏寫圖片描述

帶導航小圓點的Viewpager

ViewPager還可以實現加上帶有導航的小圓點,需要一個專門的ViewGroup來放這些小圓點,此外還需要給這些小圓點加上點擊事件,具體的實現步驟如下:

activity_viewpager.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/Linearlayout_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="30dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >
    </LinearLayout>
</RelativeLayout>

三個佈局同簡單地Viewpager一樣,依然是activity_pager_button.xml、activity_pager_text.xml、activity_pager_iamge.xml
Adapter一樣
設置小圓點的狀態page_indicator_focused.xml和page_indicator.xml

page_indicator_focused.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="5dp"
        android:height="5dp"></size>
    <corners android:radius="5dp"></corners>
    <stroke android:color="@color/grawgreen"
        android:width="1dp"></stroke>
    <solid android:color="@color/grawgreen"></solid>
</shape>
page_indicator.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"></corners>
    <size android:width="5dp"
        android:height="5dp"></size>
    <solid android:color="@color/write"></solid>
</shape>

在Java代碼中有些不一樣,ViewpagerActivity.java

 package com.example.administrator.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        // 將要分頁顯示的View裝入數組中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //將小圓點加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//聯繫上下文
            //設置layoutParams的長和寬
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //設置小圓點之間的間距
            layoutParams.setMargins(20,0,0,0);
            //將佈局加載
            img.setLayoutParams(layoutParams);
            //設置校小圓點的樣式
            img.setImageResource(R.drawable.page_indicator);
            //將小圓點加入list中
            mImages.add(img);
            //將帶有小圓點的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //設置初始狀態下的第一張的小圓點的狀態
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //設置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //設置小圓點的點擊事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //設置所有的小圓點的初始狀態
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //設置選中的小圓點的狀態
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //設置初始第一張的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
} }

這裏寫圖片描述

無限循環的Viewpager

Viewpager可以實現無限循環,有兩種方法,這裏說其中的簡單的一種,其實就是將頁卡的數量設爲無限大,在將初始的頁卡設爲其中間的一張就實現了名義上的無限循環。依舊在前面的基礎上進行改動。

acativtiy_pagerview.xml和三個佈局基本不變,activity_pager_button.xml、activity_pager_text.xml、activity_pager_iamge.xml
Adapter需要進行一些改動,ViewPagerAdapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;//得到頁卡的數量
//        return views.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (views.get(position%views.size())!=null){
            container.removeView(views.get(position%views.size()));//刪除頁卡
        }
        container.addView(views.get(position%views.size()));//添加頁卡
        return views.get(position%views.size());
//        container.addView(views.get(position));
//        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        super.destroyItem(container, position, object);
//        container.removeView(views.get(position));//刪除頁卡
    }
}

ViewPagerActivity.java

public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        // 將要分頁顯示的View裝入數組中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //將小圓點加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//聯繫上下文
            //設置layoutParams的長和寬
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //設置小圓點之間的間距
            layoutParams.setMargins(20,0,0,0);
            //將佈局加載
            img.setLayoutParams(layoutParams);
            //設置校小圓點的樣式
            img.setImageResource(R.drawable.page_indicator);
            //將小圓點加入list中
            mImages.add(img);
            //將帶有小圓點的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //設置初始狀態下的第一張的小圓點的狀態
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //設置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //設置小圓點的點擊事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //設置所有的小圓點的初始狀態
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //設置選中的小圓點的狀態
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //設置初始第一張的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

帶有標題欄的Viewpager

Viewpager帶有標題欄其實就是在xml文件內加上

 <android.support.v4.view.PagerTabStrip
            android:id="@+id/PagerTabStrip"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            />

設置標題懶得背景色

mPagerTabStrip.setBackgroundColor(Color.GRAY);

設置滑動槓的顏色

mPagerTabStrip.setTabIndicatorColor(Color.WHITE);

設置標題文本的顏色

 mPagerTabStrip.setTextColor(Color.BLUE);
 ```
 設置是否帶有下劃線
 ```
  mPagerTabStrip.setDrawFullUnderline(true);

簡單地綜合實例

activity_viewpager.xml

    <?xml version="1.0" encoding="utf-8"?>
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/PagerTabStrip"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            />
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/Linearlayout_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="30dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >
    </LinearLayout>

ViewPagerTitleActivity.java

package com.example.administrator.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        mPagerTabStrip= (PagerTabStrip)findViewById(R.id.PagerTabStrip);
        mPagerTabStrip.setBackgroundColor(Color.GRAY);//設置標題欄得背景色
        mPagerTabStrip.setTabIndicatorColor(Color.WHITE);//設置滑動槓的顏色
        mPagerTabStrip.setTextColor(Color.BLUE);//設置標題文本的顏色
        mPagerTabStrip.setDrawFullUnderline(true);//設置是否帶有下劃線
         //將要分頁顯示的View裝入數組中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //將小圓點加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//聯繫上下文
            //設置layoutParams的長和寬
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //設置小圓點之間的間距
            layoutParams.setMargins(20,0,0,0);
            //將佈局加載
            img.setLayoutParams(layoutParams);
            //設置校小圓點的樣式
            img.setImageResource(R.drawable.page_indicator);
            //將小圓點加入list中
            mImages.add(img);
            //將帶有小圓點的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //設置初始狀態下的第一張的小圓點的狀態
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //設置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //設置小圓點的點擊事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //設置所有的小圓點的初始狀態
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //設置選中的小圓點的狀態
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //設置初始第一張的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

Viewpageradapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    //重寫getPageTitle()方法加入標題
    @Override
    public CharSequence getPageTitle(int position) {
        mtitles=new ArrayList<String>();
        mtitles.add("標題一");
        mtitles.add("標題二");
        mtitles.add("標題三");
        mtitles.add("標題四");
        return mtitles.get(position%views.size());
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;//得到頁卡的數量
//        return views.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (views.get(position%views.size())!=null){
            container.removeView(views.get(position%views.size()));//刪除頁卡
        }
        container.addView(views.get(position%views.size()));//添加頁卡
        return views.get(position%views.size());
//        container.addView(views.get(position));
//        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        super.destroyItem(container, position, object);
//        container.removeView(views.get(position));//刪除頁卡
    }
}

這裏寫圖片描述

Fragment碎片

爲了更好地兼容android設備屏幕的不同,利用一種可以嵌入在UI中片段,能夠更好的利用大屏幕的空間
利用標籤在佈局中添加碎片,其中android:name用來指定要添加碎片的類名,包名也要加上。如下:

<fragment
        class="com.example.administrator.myapplication.MySecondFragment"
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></fragment>

添加碎片的類要繼承與Fragment

package com.example.administrator.myapplication;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.widget.Button;

/**
 * Created by Administrator on 2015/9/6.
 */
public class Fragment_Activity extends FragmentActivity  implements View.OnClickListener {
    private Button btn_fragment_button;
    private Button btn_fragment_text;
    private Button btn_fragment_image;
    private FragmentManager manager;
    private android.support.v4.app.FragmentTransaction transaction;
    private MyFragment mMyFragment;
    private MySecondFragment mMySecondFragment;
    private MyThirdFragment mMyThirdFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment);
        btn_fragment_button = (Button) findViewById(R.id.button_fragment_button);
        btn_fragment_text = (Button) findViewById(R.id.button_fragment_textview);
        btn_fragment_image = (Button) findViewById(R.id.button_fragment_imageView);
        btn_fragment_button.setOnClickListener(this);
        btn_fragment_text.setOnClickListener(this);
        btn_fragment_image.setOnClickListener(this);
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        mMyFragment=new MyFragment();
        mMySecondFragment=new MySecondFragment();
        mMyThirdFragment=new MyThirdFragment();
        transaction.add(R.id.fragment,mMyFragment);
        transaction.add(R.id.fragment,mMySecondFragment);
        transaction.add(R.id.fragment,mMyThirdFragment);
        transaction.hide(mMyFragment);
        transaction.hide(mMySecondFragment);
        transaction.hide(mMyThirdFragment);
        transaction.commit();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_fragment_button:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MyFragment());
                transaction.hide(mMySecondFragment);
                transaction.hide(mMyThirdFragment);
                transaction.show(mMyFragment);
                transaction.commit();
                break;
            case R.id.button_fragment_textview:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MySecondFragment());
                String
                text=mMyThirdFragment.getText();
                mMySecondFragment.setText(text);
                transaction.hide(mMyFragment);
                transaction.hide(mMyThirdFragment);
                transaction.show(mMySecondFragment);
                transaction.commit();
                break;
            case R.id.button_fragment_imageView:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MyThirdFragment());
                transaction.hide(mMyFragment);
                transaction.hide(mMySecondFragment);
                transaction.show(mMyThirdFragment);
                transaction.commit();
                break;
            default:
                break;
        }
    }
}

activity_main.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <!--<fragment-->
        <!--class="com.example.administrator.myapplication.MySecondFragment"-->
        <!--android:id="@+id/fragment"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="match_parent"></fragment>-->
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            >
    <Button
        android:id="@+id/button_fragment_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment按鈕"/>
    <Button
        android:id="@+id/button_fragment_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按鈕文字"/>
    <Button
        android:id="@+id/button_fragment_imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按鈕圖片"/>
            </LinearLayout>
        </RelativeLayout>
    </FrameLayout>
</LinearLayout>

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章