新闻客户端之欢迎界面和新手引导界面

 

 

效果如图 现在开发了欢迎界面和新手引导界面 我没有美工 只有还用我的帅气的草泥马头像了

 

猴年的窗花贴纸也是我扣的..呵呵呵呵呵 求美工妹子照顾给我做几个TAB 

 

祝大家新年快乐! 明天就是大年三十了!

 

github:

https://github.com/AceInAndroid/AnYangNews

 

最近其他不写了 把这个写完再写其他教程 .

 

20160208 updated.

 

=============================================================

 

 写些比较难的地方: 小圆点的位移控制:

1 获得全局视图树对象 

2 设置全局布局监听器

3 在回调方法中计算两个灰点的间距 

    // 页面绘制结束之后, 计算两个圆点的间距
        // 视图树
        ivRedPoint.getViewTreeObserver().addOnGlobalLayoutListener(
                new OnGlobalLayoutListener() {

                    // layout方法执行结束(位置确定)
                    @Override
                    public void onGlobalLayout() {
                        // 移除监听
                        ivRedPoint.getViewTreeObserver()
                                .removeGlobalOnLayoutListener(this);

                        // 获取两个圆点的间距
                        mPointWidth = llContainer.getChildAt(1).getLeft()
                                - llContainer.getChildAt(0).getLeft();
                        System.out.println("" + mPointWidth);
                    }
                });

4 在Viewpager 的监听器中 ,onPageScrolled方法中 用传入的偏移百分比和位置来计算小红点的左边距 传入布局参数中 来控制

 

mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                if (position == mImageIds.length - 1) {// 最后页面显示开始体验
                    btnStart.setVisibility(View.VISIBLE);
                } else {
                    btnStart.setVisibility(View.GONE);
                }
            }

            // 页面滑动过程的回调
            @Override
            public void onPageScrolled(int position, float positionOffset,
                    int positionOffsetPixels) {
                System.out.println("当前位置:" + position + ";偏移百分比:"
                        + positionOffset);
                // 计算当前小红点的左边距
                int leftMargin = (int) (mPointWidth * positionOffset + position
                        * mPointWidth);

                // 修改小红点的左边距
                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ivRedPoint
                        .getLayoutParams();
                params.leftMargin = leftMargin;
                ivRedPoint.setLayoutParams(params);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

 

 

还有一个知识点 样式选择器和颜色选择器参考我这篇, 其他知识都很简单就不一一描述了

http://www.cnblogs.com/AceIsSunshineRain/p/5185167.html

 

侧边栏采用了slidingmenu 这个库 很简单重点是红色部分.leftmenu里是个帧布局用来充当容器填充fragment 明天再上传最新的代码:

public class MainActivity extends SlidingFragmentActivity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 去掉标题, 必须在setContentView之前执行
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        // 添加侧边栏
        setBehindContentView(R.layout.left_menu);
        SlidingMenu slidingMenu = getSlidingMenu();
        // 全屏触摸
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        // 屏幕预留200像素
        slidingMenu.setBehindOffset(200);

        initFragment();
    }
原文地址:https://www.cnblogs.com/AceIsSunshineRain/p/5184511.html