AndroidAndroid开发学习

Android实现引导页

2019-04-27  本文已影响308人  章北辰

学习地址:https://www.imooc.com/video/15445
Android实现引导页的方式:

接下来将四中实现的方法记录一下。

一个Splash

除了主界面外,新建SplashActivity,并将SplashActivity设置为启动页,修改SplashActivity的代码,通过hander来显示splash的延时跳转(记得finish)。

public class SplashActivity extends AppCompatActivity {
    private static final Long DELAY_TIME = 3000l;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
                finish();
            }
        }, DELAY_TIME);
    }
}
ViewPage(+fragment)

如图,上边是viewpager里的多个fragment,下边是LinearLayout布局,布局里放几个点。
需要重写activity_view_pager布局,设置viewpager的适配器adapter,以及ViewPagerActivity


viewpager.png
activity_view_pager.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="match_parent"></android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/ll_indicator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:layout_marginBottom="30dp"
        android:orientation="horizontal"></LinearLayout>
</FrameLayout>

#######ViewPagerActivity .java

public class ViewPagerActivity extends FragmentActivity {
    ViewPager viewPager;
    private LinearLayout llIndicator;
    private PagerAdapter adapter;
    private List<Fragment> fragments = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_pager);
        viewPager = findViewById(R.id.viewpager);
        llIndicator = findViewById(R.id.ll_indicator);

        //创建fragment
        for (int i = 0; i < 3; i++) {
            ContentFragment fragment = new ContentFragment();
            Bundle bundle = new Bundle();
            bundle.putInt("index", i);
            fragment.setArguments(bundle);
            fragments.add(fragment);
        }
        adapter = new ViewPagerAdapter(getSupportFragmentManager(), fragments);
        viewPager.setAdapter(adapter);

        //定义监听事件,当fragment发生变化时圆点进行切换
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int index, float v, int i1) {
                for (int i = 0; i < fragments.size(); i++) {
                    llIndicator.getChildAt(i).setBackgroundResource(index == i ? R.drawable.dot_focus : R.drawable.dot_normal);
                }
            }
            @Override
            public void onPageSelected(int i) {
            }
            public void onPageScrollStateChanged(int i) {
            }
        });
        initIndicator();
    }

    private void initIndicator() {//初始化圆点
        int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10f, getResources().getDisplayMetrics());
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, width);
        lp.rightMargin = 2 * width;
        for (int i = 0; i < fragments.size(); i++) {
            View view = new View(this);
            view.setId(i);
            view.setBackgroundResource(i == 0 ? R.drawable.dot_normal : R.drawable.dot_focus);
            view.setLayoutParams(lp);
            llIndicator.addView(view, i);
        }
    }
}
ContentFragment .java
public class ContentFragment extends Fragment {
    private int[] bgRes = {R.drawable.table, R.drawable.table, R.drawable.table};
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_content, null);
        Button btn = view.findViewById(R.id.btn);
        RelativeLayout rl = view.findViewById(R.id.rl);
        int index = getArguments().getInt("index");//获取当前fragment所携带的index值,对应单签是第几个fragment
        rl.setBackgroundResource(bgRes[index]);//设置对应的背景图片
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), MainActivity.class));
            }
        });
        btn.setVisibility(index == 2 ? View.VISIBLE : View.GONE);//当界面为最后一个界面时才显示按钮
        return view;
    }
}
ViewPagerAdapter
public class ViewPagerAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragments = new ArrayList<>();
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }
    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }
    @Override
    public Fragment getItem(int i) {
        return fragments.get(i);
    }
    @Override
    public int getCount() {
        return fragments.size();
    }
}
ViewFlipper
ScrollView
上一篇下一篇

猜你喜欢

热点阅读