https://github.com/wanglianghai/UsefulViewPageAPPin
http://www.jianshu.com/p/7833d8450405
这是实习的最后一次demo了,日子是充实的,学习了很多。
主要就是自定义view和page view的联合使用
1.先自定义好下面的指示器(指示器位置抽成一个对象方便画图)
2.要自定义view和view page联合使用
1.在自定义view中

implements ViewPager.OnPageChangeListener
//OnPageChangeListener
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }
    @Override
    public void onPageSelected(int position) {
        mSelectPosition = position;//记录选中的位置
        invalidate();//重新画视图
    }
    @Override
    public void onPageScrollStateChanged(int state) {
    }

2.添加进view page中就行了

public void setUpWithViewPage(ViewPager viewPage) {
        mViewPage = viewPage;
        mViewPage.addOnPageChangeListener(this);
    }

3.圈的点击事件
1.onTouchEvent中记录点的位置

@Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mClickX = (int) event.getX();
                mClickY = (int) event.getY();
                isClick();
                break;
        }
        return super.onTouchEvent(event);
    }

2.判断在那个圈中

public void isClick() {
        for (int i = 0; i < mCount; i++) {
            Indicator indicator = mIndicators.get(i);
            if (Math.abs(indicator.cx - mClickX) < mRadius
                    && Math.abs(indicator.cy - mClickY) < mRadius) {
                mViewPage.setCurrentItem(i);//设置点击
                break;
            }
        }
    }

沉浸式状态栏
http://www.jianshu.com/p/752f4551e134
方式一:

<style name="AppTheme" parent="Theme.Design.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/holo_red_light</item>
    </style>

方式二:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        //注意要清除 FLAG_TRANSLUCENT_STATUS flag
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        getWindow().setStatusBarColor(getResources().getColor(android.R.color.holo_red_light));
  • For this to take effect,
  • 要让这个方法起作用
    • the window must be drawing the system bar backgrounds with
    • 这个window必须被画用系统的bar背景(android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS})
    • {@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS} and
    • 并且{@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS}不被设置
    • {@link android.view.WindowManager.LayoutParams#FLAG_TRANSLUCENT_STATUS} must not be set.
      *
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐