在Android项目开发中我们经常会遇到设置时间的操作,根据要求设置我们需要的年、月、日、时、分、秒等信息, 下面这个自定的WheelView同样是因为我们项目中的需要,经过修改后使用。项目中的屏幕截图如图一:
这个View和它后面的透明遮挡是attach到相应的activity上去的,这样的好处不言而喻 (我们分享的UI也是这样处理的如图二,原来会想到用PopupWindow,不过这样会麻烦些)。 touch到它的透明遮挡或click取消按钮都会使 这个View隐藏。当然它的显示和隐藏并不会反人类的生硬的显示与隐藏,是有相应的渐入渐出的动画效果。
主要代码如下:
将View添加到Activity的界面里
public void attachView(Activity activity) {
((ViewGroup) activity.getWindow().getDecorView()).addView(fullMaskView);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.BOTTOM;
((ViewGroup) activity.getWindow().getDecorView()).addView(contentLayout, params);
}
动态显示与隐藏该View
public void show() {
fullMaskView.setVisibility(View.VISIBLE);
contentLayout.setVisibility(View.VISIBLE);
YoYo.with(Techniques.SlideInUp).duration(200).playOn(contentLayout);
}
public void hide() {
fullMaskView.setVisibility(View.GONE);
YoYo.with(Techniques.SlideOutDown).duration(200).withListener(new SlideOutDownAnimatorListener(contentLayout)).playOn(contentLayout);
}
初始化WhellView
为这个时间选择器设置数据,不可循环滚动,设置显示5个item和显示item的高度和字体的大小,并为这个View设置监听器。
private void initWhellView(WheelView wheelView, WheelAdapter adapter, OnWheelChangedListener listener, int currentIndex) {
wheelView.setAdapter(adapter);
wheelView.setCyclic(false);
wheelView.setVisibleItems(5);
wheelView.setCurrentItem(currentIndex);
wheelView.TEXT_SIZE = 14;
wheelView.ADDITIONAL_ITEM_HEIGHT = 24;
wheelView.addChangingListener(listener);
}