/*
* Android Wheel Control.
* https://code.google.com/p/android-wheel/
*
* Copyright 2010 Yuri Kanivets
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package kankan.wheel.widget;
import java.util.LinkedList;
import java.util.List;
import org.unism.wang.R;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Handler;
import android.os.Message;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.util.FloatMath;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
import android.widget.Scroller;
/**
* Numeric wheel view.
*
* @author Yuri Kanivets
*/
public class WheelView extends View {
/**
* Scrolling duration
*
* </br>
* 滚动持续时间(毫秒)
*/
private static final int SCROLLING_DURATION = 400;
/**
* Minimum delta for scrolling
*
* </br>
* 滚动的最小差值
*/
private static final int MIN_DELTA_FOR_SCROLLING = 1;
/**
* Current value & label text color
*
* </br>
* 当前选中项 的 文字 的 颜色
*/
private static final int VALUE_TEXT_COLOR = 0xF0000000;
/**
* Items text color
*
* </br>
* 选项 的 文字 的 颜色
*/
private static final int ITEMS_TEXT_COLOR = 0xFF000000;
/**
* Top and bottom shadows colors
*
* </br>
* 顶部和底部阴影 的 颜色 </br>
* 选择器 顶部和底部颜色是渐变的,这里指定一个渐变色的数组
*/
private static final int[] SHADOWS_COLORS = new int[] { 0xFFFFFFFF,
0x00EEEED5, 0x00EEEED5 };
/**
* Additional items height (is added to standard text item height)
*
* </br>
* 附加项的高度项的高度 (单位应该是dp) </br>
* 从后面getDesiredHeight() 函数看出,这个值应该是平分给每一个选项的。 </br>
* 类似于设置行距吧,不过这是一个总和,也就是有5个可见项,那么每个可见项的附加高就是 ADDITIONAL_ITEM_HEIGHT/5
*/
private static final int ADDITIONAL_ITEM_HEIGHT = 15;
/**
* Text size
*
* </br>
* 字号
*/
private static final int TEXT_SIZE = 24;
/**
* Top and bottom items offset (to hide that)
*
* </br>
* 这个是选项在顶部和底部被抵消的值。 </br>
* 怎么解释呢~ 其实试一下就知道了, </br>
* 比如说在picker中显示的五项(中间那个是选中的),剩余4是没选中的。 </br>
* 在没选中的这4项中,位于顶部和底部的项,会用阴影遮挡(遮挡一部分,这样用户就明白是需要滑动操作了) </br>
* 这里设定的值,就是指定遮挡的size,这里的默认值 TEXT_SIZE / 5 是遮挡了1/5的字号 (那么单位也应该是sp吧)
*/
private static final int ITEM_OFFSET = TEXT_SIZE / 5;
/**
* Additional width for items layout
*
* </br>
* 附加项空间? 不理解~~还是试试吧 </br>
* 应该是项的宽,这个属性应该是受制于外边区域的, 设置的太宽里面的文字显示会出问题 </br>
* 具体影响 有待进一步实验证明
*/
private static final int ADDITIONAL_ITEMS_SPACE = 10;
/**
* Label offset
*
* </br>
* 标签抵消 (作用未知) 用1,8,和800 三个值实验(8是默认值) 效果是一样的。
*/
private static final int LABEL_OFFSET = 8;
/**
* Left and right padding value
*
* </br>
* 填充 </br>
* 这个选项的内部填充,如果选项是个TextView的话,那这里设置的即是TextView的填充 </br>
* =。=!后面代码还米有看,item是啥我也不知道
*/
private static final int PADDING = 10;
/**
* Default count of visible items
*
* </br>
* 默认可见项的数目。就是picker中显示几项
*/
private static final int DEF_VISIBLE_ITEMS = 5;
// Wheel Values
/**
* Wheel Values
*
* </br>
* 适配器,items就通过适配器来提供的吧
*/
private WheelAdapter adapter = null;
/**
* Wheel Values
*
* </br>
* 当前项
*/
private int currentItem = 0;
// Widths
/**
* Widths
*
* </br>
* 做了实验 把值设为100 没有任何变化
*/
private int itemsWidth = 0;
/**
* Widths
*
* </br>
* 也做了实验 把值设为100 没有任何变化
*/
private int labelWidth = 0;
// Count of visible items
/**
* Count of visible items
*
* </br>
* 可见项目的条数
*/
private int visibleItems = DEF_VISIBLE_ITEMS;
// Item height
/**
* Item height
*
* </br>
* 是item的高
*/
private int itemHeight = 0;
// Text paints
/**
* Text paints
*
* </br>
* 选中文本的颜色
*/
private TextPaint itemsPaint;
/**
* Text paints
*
* </br>
* 未选中文本的颜色
*/
private TextPaint valuePaint;
// Layouts
/**
* Layouts
*
* </br>
* 选项 的 布局
*/
private StaticLayout itemsLayout;
/**
* Layouts
*
* </br>
* 标签 的 布局
*/
private StaticLayout labelLayout;
/**
* Layouts
*
* </br>
* 选中项 的 布局
*/
private StaticLayout valueLayout;
// Label & background
/**
* Label & background
*
* </br>
* 标签
*/
private String label;
/**
* Label & background
* 中间的几何体 </br>
* 选中区域的背景
*/
private Drawable centerDrawable;
// Shadows drawables
/**
* Shadows drawables
*
* </br>
* 上边 和 底部 的阴影部分的背景资源
*/
private GradientDrawable topShadow;
private GradientDrawable bottomShadow;
// Scrolling
/**
* Scrolling
*
* </br>
* 执行滚动?
*/
private boolean isScrollingPerformed;
/**
* Scrolling
*
* </br>
* 滚动抵消?
*/
private int scrollingOffset;
// Scrolling animation
/**
* Scrolling animation
*
* </br>
* 手势检测器
*/
private GestureDetector gestureDetector;
/**
* Scrolling animation
*
* </br>
* 卷轴
*/
private Scroller scroller;
/**
* Scrolling animation
*
* </br>
* 最后的 卷轴Y
*/
private int lastScrollY;
// Cyclic
/**
* Cyclic
*
* </br>
* 是否循环
*/
boolean isCyclic = false;
// Listeners
/**
* Listeners
*
* </br>
* 控件改变监听器的 集合
*/
private List<OnWheelChangedListener> changingListeners = new LinkedList<OnWheelChangedListener>();
/**
* Listeners
*
* </br>
* 控件滚动监听器的 集合
*/
private List<OnWheelScrollListener> scrollingListeners = new LinkedList<OnWheelScrollListener>();
/**
* Constructor
*
* </br>
* 构造器 并实例了手势检测器 和 卷轴
*/
public WheelView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initData(context);
}
/**
* Constructor
*
* </br>
* 构造器 并实例了手势检测器 和 卷轴
*/
public WheelView(Context context, AttributeSet attrs) {
super(context, attrs);
initData(context);
}
/**
* Constructor
*
* </br>
* 构造器 并实例了手势检测器 和 卷轴
*/
public WheelView(Context context) {
super(context);
initData(context);
}
/**
* Initializes class data
* @param context the context
*
* </br>
* 数据初始化 </br>
* 就是把手势检测器 和 卷轴类 实例了 </br>
* 这个方法在所有的构造器中都被调用了
*/
private void initData(Context context) {
gestureDetec
没有合适的资源?快使用搜索试试~ 我知道了~
MyPicker v1.0.1.rar (2012-03-26)
共54个文件
class:26个
java:10个
png:6个
5星 · 超过95%的资源 需积分: 16 53 下载量 78 浏览量
2012-03-26
10:05:44
上传
评论
收藏 111KB RAR 举报
温馨提示
MyPicker v1.0.0.rar --基于kankan.wheel.widget开源控件 编写的DatePicker 和 TimePicker --可以自定义样式,kankan.wheel.widget.WheelView 都加了中文注释。 --需要在项目中使用日期时间输入,同时要求Picker样式符合应用主题的童鞋可以试试。 MyPicker v1.0.1.rar --修改了一个错误,在onChangeListener为空的情况下不会再报空指针了。 --计算闰月显示的方法也做了优化。
资源推荐
资源详情
资源评论
收起资源包目录
MyPicker v1.0.1.rar (54个子文件)
MyPicker
AndroidManifest.xml 735B
res
layout
main.xml 1KB
drawable-ldpi
ic_launcher.png 2KB
drawable
wheel_val.xml 1KB
wheel_bg.xml 1KB
drawable-mdpi
ic_launcher.png 3KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 182B
proguard.cfg 1KB
src
org
unism
wang
widget
TimePicker.java 3KB
DatePicker.java 5KB
MyPickerActivity.java 2KB
kankan
wheel
widget
NumericWheelAdapter.java 2KB
WheelAdapter.java 1KB
WheelView.java 31KB
OnWheelChangedListener.java 1KB
OnWheelScrollListener.java 1KB
ArrayWheelAdapter.java 2KB
bin
classes
org
unism
wang
widget
DatePicker$2.class 1KB
TimePicker$1.class 946B
TimePicker$2.class 945B
TimePicker.class 4KB
TimePicker$OnChangeListener.class 255B
DatePicker$3.class 946B
DatePicker$1.class 1KB
DatePicker$OnChangeListener.class 257B
DatePicker.class 5KB
MyPickerActivity$2.class 1KB
R.class 503B
R$layout.class 382B
R$attr.class 328B
R$id.class 468B
R$string.class 415B
MyPickerActivity.class 2KB
R$drawable.class 460B
MyPickerActivity$1.class 1KB
kankan
wheel
widget
ArrayWheelAdapter.class 1KB
WheelView.class 17KB
OnWheelChangedListener.class 204B
WheelAdapter.class 224B
WheelView$1.class 2KB
NumericWheelAdapter.class 2KB
WheelView$2.class 2KB
OnWheelScrollListener.class 239B
res
drawable-ldpi
ic_launcher.png 2KB
drawable-mdpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
classes.dex 26KB
resources.ap_ 12KB
MyPicker.apk 26KB
.classpath 364B
assets
project.properties 360B
.project 844B
gen
org
unism
wang
R.java 1009B
共 54 条
- 1
资源评论
- 高效码农2015-02-12真实可用,谢谢分享!
- wfs19832015-06-03可以在产品中用吗?apache是怎样的license?
- unit7772014-08-01有用的.已在项目中用了
- ruanjiangongcheng12016-08-01感谢分享,更改后可用
- denonji2013-05-15用处不是很大
awdx1132
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功