效果如图 现在开发了欢迎界面和新手引导界面 我没有美工 只有还用我的帅气的草泥马头像了
猴年的窗花贴纸也是我扣的..呵呵呵呵呵 求美工妹子照顾给我做几个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();
}