第三十一天 ViewPager(带小圆点的图片左右循环滑动)、Fragment

ViewPager

布局

activity_main

<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"
    tools:context=".MainActivity">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/pagertab"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom">
        </android.support.v4.view.PagerTabStrip>
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/linearlayout"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center"
        android:layout_margin="30dp">
    </LinearLayout>
</RelativeLayout>

ImageView(图片布局:3张图片布局相同)
viewpager_layout1:

<?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/img1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/view" />
</LinearLayout>

ViewPagerAdapter

public class ViewPagerAdapter extends PagerAdapter{
    private List<View> views;
    private String[] titles={"图片一","图片二","图片三"};

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

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


    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view=views.get(position%views.size());
        if(view.getParent()!=null){
            container.removeView(view);
        }
        container.addView(view);
        return view;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position%views.size()];
    }

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

MainActivity

public class MainActivity extends Activity {
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager mViwePager;
    private LinearLayout mLinearLayout;
    private List<ImageView> mPoints;
    private PagerTabStrip mPagerTab;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mViwePager= (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (LinearLayout) findViewById(R.id.linearlayout);
        mPagerTab= (PagerTabStrip) findViewById(R.id.pagertab);
        mPagerTab.setTabIndicatorColor(Color.BLUE);
        mPagerTab.setBackgroundColor(Color.WHITE);
        mPagerTab.setGravity(Gravity.BOTTOM);
        mPagerTab.setDrawFullUnderline(true);

        views=new ArrayList<View>();
        mInflater=getLayoutInflater();
        View view1=mInflater.inflate(R.layout.viewpager_layout1,null);
        View view2=mInflater.inflate(R.layout.viewpager_layout2,null);
        View view3=mInflater.inflate(R.layout.viewpager_layout3,null);
        views.add(view1);
        views.add(view2);
        views.add(view3);
        mPoints=new ArrayList<>();
        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.state);
            mPoints.add(iv);
            mLinearLayout.addView(iv);
        }
        //第一张图片设置为选中小圆点状态
        mPoints.get(0).setBackgroundResource(R.mipmap.state1);
        ViewPagerAdapter adapter=new ViewPagerAdapter(views);
        mViwePager.setAdapter(adapter);
        mViwePager.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.state);
                }
                   mPoints.get(position%views.size()).setImageResource(R.mipmap.state1);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        //将第一张图片设置为中间位置,可以循环右滑
        mViwePager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%views.size());
    }
}

这里写图片描述

Fragment

activity_main

<LinearLayout 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"
    tools:context=".MainActivity"
    android:orientation="vertical">
<FrameLayout
    android:id="@+id/framlayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
</FrameLayout>
<LinearLayout
    android:id="@+id/list_item"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center">
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment1"/>
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment2"/>
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment3"/>
</LinearLayout>
</LinearLayout>

fragment_layout

<?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">
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button"/>
</LinearLayout>

fragment2_layout

<?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">
<TextView
    android:id="@+id/textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="第二个fragment"/>
</LinearLayout>

fragment3_layout

<?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">
<EditText
    android:id="@+id/edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="第三个Fragment"/>
</LinearLayout>

MyFragment继承Fragment

public class MyFragment extends Fragment {
    private Button mButton;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_layout,null);
        mButton= (Button) view.findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(),"点击了按钮",Toast.LENGTH_LONG).show();
            }
        });
        return view;
    }
}

SecondFragment

public class SecondFragment extends Fragment {
    private TextView mTextView;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment2_layout,null);
        mTextView= (TextView) view.findViewById(R.id.textview);
        return view;
    }
    public void setText(String text){
        if(text.length()>=1){
           mTextView.setText(text);
        }
    }
}

ThirdFragment

public class ThirdFragment extends Fragment {
    private EditText mEditText;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment3_layout,null);
        mEditText= (EditText) view.findViewById(R.id.edittext);

        return view;
    }
    public String getText(){
        String s=null;
        if(mEditText!=null){
            s=mEditText.getText().toString();
        }
        return s;
    }
}

MainActivity继承Activity

public class MainActivity extends FragmentActivity implements View.OnClickListener {
    private FrameLayout mFrameLayout;
    private Button mButton1;
    private Button mButton2;
    private Button mButton3;
    private MyFragment mMyFragment;
    private SecondFragment mSecondFragment;
    private ThirdFragment mThirdFragment;
    private FragmentManager mFragmentManager;
    private FragmentTransaction mFragmentTransaction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mButton1= (Button) findViewById(R.id.button1);
        mButton2= (Button) findViewById(R.id.button2);
        mButton3= (Button) findViewById(R.id.button3);
        mFrameLayout= (FrameLayout) findViewById(R.id.framlayout);
        mButton1.setOnClickListener(this);
        mButton2.setOnClickListener(this);
        mButton3.setOnClickListener(this);
        mFragmentManager=getSupportFragmentManager();
        mMyFragment=new MyFragment();
        mSecondFragment=new SecondFragment();
        mThirdFragment=new ThirdFragment();
        mFragmentTransaction=mFragmentManager.beginTransaction();
        mFragmentTransaction.add(R.id.framlayout,mMyFragment);
        mFragmentTransaction.add(R.id.framlayout,mSecondFragment);
        mFragmentTransaction.add(R.id.framlayout,mThirdFragment);
        mFragmentTransaction.hide(mMyFragment);
        mFragmentTransaction.hide(mSecondFragment);
        mFragmentTransaction.hide(mThirdFragment);
        mFragmentTransaction.commit();
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.button1:
                mFragmentTransaction=mFragmentManager.beginTransaction();
mFragmentTransaction.hide(mThirdFragment);
                mFragmentTransaction.hide(mSecondFragment);
                mFragmentTransaction.show(mMyFragment);
                mFragmentTransaction.commit();
                break;
            case R.id.button2:
                mFragmentTransaction=mFragmentManager.beginTransaction();
     mFragmentTransaction.hide(mMyFragment);
                mFragmentTransaction.hide(mThirdFragment);
                mFragmentTransaction.show(mSecondFragment);
                String text=mThirdFragment.getText();
                mSecondFragment.setText(text);
                mFragmentTransaction.commit();
                break;
            case R.id.button3:
                mFragmentTransaction=mFragmentManager.beginTransaction();
                mFragmentTransaction.hide(mMyFragment);
                mFragmentTransaction.hide(mSecondFragment);
                mFragmentTransaction.show(mThirdFragment);
                mFragmentTransaction.commit();
                break;
            default:
                break;
        }
    }
}

这里写图片描述
当点击第二个按钮时,textview中显示edittext中输入的内容
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值