09-04、05 ViewPager

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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" tools:context=".MainActivity"
    >

   <android.support.v4.view.ViewPager
       android:id="@+id/viewpager"
       android:layout_height="match_parent"
       android:layout_width="match_parent">
       <!-- 條狀顯示,可加入文字-->
       <android.support.v4.view.PagerTabStrip
           android:id="@+id/pagertab"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_gravity="top"
           ></android.support.v4.view.PagerTabStrip>
   </android.support.v4.view.ViewPager>

    <LinearLayout
        android:id="@+id/linerlayout_Continer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20dp">
    </LinearLayout>
</RelativeLayout>

viewpager1

<?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:id="@+id/imageview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/air"/>
</LinearLayout>

viewpager2

<?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:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是第二個界面"/>
</LinearLayout>

viewpager3

<?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"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是第三個界面"/>
</LinearLayout>

class文件 MyPagerAdapter

package com.example.administrator.myviewpager.adapter;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.example.administrator.myviewpager.R;
import java.util.List;

/**
 * Created by Administrator on 2015/9/1.
 */
public class MyPagerAdapter extends PagerAdapter{
    private List<View> views;
    private String[] titles={"頁面一","頁面二","頁面三"};

    //在頂部條狀顯示
    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position%titles.length];//獲取處在第幾個位置
    }

    public MyPagerAdapter( List<View> views){
        this.views=views;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        final View view=views.get(position%views.size());
        if(view.getParent()!=null){
            container.removeView(view);
        }
       container.addView(view);
        if(position%views.size()==2){//獲取處在第幾個位置
            Button button= (Button) view.findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(view.getContext(),"點擊了這個按鈕",Toast.LENGTH_SHORT).show();
                }
            });
        }
        return views.get(position%views.size());//獲取處在第幾個位置
    }

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

MainActivity

package com.example.administrator.myviewpager;

import android.graphics.Color;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.administrator.myviewpager.adapter.MyPagerAdapter;

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

public class MainActivity extends AppCompatActivity {
    private ViewPager mViewPager;
    private List<View> views;
    private LayoutInflater mInflater;
    private LinearLayout mLinearLayoutContiner;
    private List<ImageView> mPoints;
    private PagerTabStrip mPagerTab;

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

    private void initViewPager() {
        mViewPager= (ViewPager) findViewById(R.id.viewpager);
        mLinearLayoutContiner= (LinearLayout) findViewById(R.id.linerlayout_Continer);

        //條狀顯示,可加入文字
        mPagerTab= (PagerTabStrip) findViewById(R.id.pagertab);
        mPagerTab.setBackgroundColor(Color.LTGRAY);//設置背景顏色
        mPagerTab.setTabIndicatorColor(Color.RED);//設置表示當前界面下劃線的顏色
        mPagerTab.setTextColor(Color.GREEN);//設置字體顏色
        mPagerTab.setDrawFullUnderline(true);//顯示PagerTabStrip整體下方的線

        views=new ArrayList<>();
        mInflater=getLayoutInflater();
        View view1=mInflater.inflate(R.layout.viewpager1,null);
        View view2=mInflater.inflate(R.layout.viewpager2,null);
        View view3=mInflater.inflate(R.layout.viewpager3,null);
        views.add(view1);
        views.add(view2);
        views.add(view3);
        mPoints=new ArrayList<>();//將所有點圖標的圖片添加到一個list中
        for (int i = 0; i <3 ; i++) {
            ImageView iv=new ImageView(this);//圖片初始化
            //設置圖片的寬和高
            iv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            iv.setImageResource(R.mipmap.backgroud_gray);//添加圖片
            //設置圖片之間的間隔
//            iv.setLeft(10);
//            iv.setRight(10);
//            iv.setTop(10);
//            iv.setBottom(10);
//            iv.layout(10,10,10,10);
            mPoints.add(iv);//
            mLinearLayoutContiner.addView(iv);
        }
        mPoints.get(0).setImageResource(R.mipmap.background_green);//最初的界面點圖標顯示爲綠色
        MyPagerAdapter myPagerAdapter=new MyPagerAdapter(views);
        mViewPager.setAdapter(myPagerAdapter);
        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for(ImageView iv:mPoints){
                    iv.setImageResource(R.mipmap.backgroud_gray);//將所有的點設爲灰色
                }
                mPoints.get(position%views.size()).setImageResource(R.mipmap.background_green);//將當前界面的點設爲綠色
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        mViewPager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%views.size());//使得最初的界面處於第一張的位置,實現循環

    }



    @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);
    }
}
![這裏寫圖片描述](http://img.blog.csdn.net/20150906202711603)
![這裏寫圖片描述](http://img.blog.csdn.net/20150906202727030)
![這裏寫圖片描述](http://img.blog.csdn.net/20150906202739749)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章