ViewPager
这是在手机上最常见的一种控件,几乎每款手机软件都会应用,ViewPager+Fragment的使用可以实现更加美观的界面和效果。
java代码:
主类:
package com.example.day13;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import java.util.ArrayList;
public class day13 extends AppCompatActivity {
ViewPager vp;
RadioButton first;
RadioButton second;
TabLayout tl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_day13);
vp = findViewById(R.id.vp);
first = findViewById(R.id.first);
second = findViewById(R.id.second);
tl = findViewById(R.id.tb);
first.setChecked(true);
ArrayList<Fragment> list = new ArrayList<>();
ArrayList<String> titles = new ArrayList<>();
One one = new One();
Two two = new Two();
list.add(one);
list.add(two);
titles.add("选项卡1");
titles.add("选项卡2");
vp.setAdapter(new MyAdapter(getSupportFragmentManager(),list,titles));
tl.setupWithViewPager(vp);
first.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
vp.setCurrentItem(0);
}
}
});
second.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
vp.setCurrentItem(1);
}
}
});
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
switch(i){
case 0:
first.setChecked(true);
break;
case 1:
second = findViewById(R.id.second);
second.setChecked(true);
break;
}
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
}
}
适配器代码:
package com.example.day13;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
public class MyAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments;
ArrayList<String> titles;
public MyAdapter(FragmentManager fm, ArrayList<Fragment> fragments,ArrayList<String> titles) {
super(fm);
this.fragments = fragments;
this.titles = titles;
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
Fragment类代码:
package com.example.day13;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class One extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.layout_one,container,false);
}
}
效果图: