/*
* 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 com.amo.demo.wheelview;
import java.util.LinkedList;
import java.util.List;
import com.ly.control.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.MotionEvent;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.animation.Interpolator;
import android.widget.Scroller;
/**
* Numeric wheel view.
*
* @author Yuri Kanivets
*/
public class WheelView extends View {
/** Scrolling duration */
private static final int SCROLLING_DURATION = 400;
/** Minimum delta for scrolling */
private static final int MIN_DELTA_FOR_SCROLLING = 1;
/** Current value & label text color */
private static final int VALUE_TEXT_COLOR = 0xF0000000;
/** Items text color */
private static final int ITEMS_TEXT_COLOR = 0xFF000000;
/** Top and bottom shadows colors */
private static final int[] SHADOWS_COLORS = new int[] { 0xFF111111,
0x00AAAAAA, 0x00AAAAAA };
/** Additional items height (is added to standard text item height) */
private static final int ADDITIONAL_ITEM_HEIGHT = 15;
/** Text size */
public int TEXT_SIZE;
/** Top and bottom items offset (to hide that) */
private final int ITEM_OFFSET = TEXT_SIZE / 5;
/** Additional width for items layout */
private static final int ADDITIONAL_ITEMS_SPACE = 10;
/** Label offset */
private static final int LABEL_OFFSET = 8;
/** Left and right padding value */
private static final int PADDING = 10;
/** Default count of visible items */
private static final int DEF_VISIBLE_ITEMS = 5;
// Wheel Values
private WheelAdapter adapter = null;
private int currentItem = 0;
// Widths
private int itemsWidth = 0;
private int labelWidth = 0;
// Count of visible items
private int visibleItems = DEF_VISIBLE_ITEMS;
// Item height
private int itemHeight = 0;
// Text paints
private TextPaint itemsPaint;
private TextPaint valuePaint;
// Layouts
private StaticLayout itemsLayout;
private StaticLayout labelLayout;
private StaticLayout valueLayout;
// Label & background
private String label;
private Drawable centerDrawable;
// Shadows drawables
private GradientDrawable topShadow;
private GradientDrawable bottomShadow;
// Scrolling
private boolean isScrollingPerformed;
private int scrollingOffset;
// Scrolling animation
private GestureDetector gestureDetector;
private Scroller scroller;
private int lastScrollY;
// Cyclic
boolean isCyclic = false;
// Listeners
private List<OnWheelChangedListener> changingListeners = new LinkedList<OnWheelChangedListener>();
private List<OnWheelScrollListener> scrollingListeners = new LinkedList<OnWheelScrollListener>();
/**
* Constructor
*/
public WheelView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initData(context);
}
/**
* Constructor
*/
public WheelView(Context context, AttributeSet attrs) {
super(context, attrs);
initData(context);
}
/**
* Constructor
*/
public WheelView(Context context) {
super(context);
initData(context);
}
/**
* Initializes class data
*
* @param context
* the context
*/
private void initData(Context context) {
gestureDetector = new GestureDetector(context, gestureListener);
gestureDetector.setIsLongpressEnabled(false);
scroller = new Scroller(context);
}
/**
* Gets wheel adapter
*
* @return the adapter
*/
public WheelAdapter getAdapter() {
return adapter;
}
/**
* Sets wheel adapter
*
* @param adapter
* the new wheel adapter
*/
public void setAdapter(WheelAdapter adapter) {
this.adapter = adapter;
invalidateLayouts();
invalidate();
}
/**
* Set the the specified scrolling interpolator
*
* @param interpolator
* the interpolator
*/
public void setInterpolator(Interpolator interpolator) {
scroller.forceFinished(true);
scroller = new Scroller(getContext(), interpolator);
}
/**
* Gets count of visible items
*
* @return the count of visible items
*/
public int getVisibleItems() {
return visibleItems;
}
/**
* Sets count of visible items
*
* @param count
* the new count
*/
public void setVisibleItems(int count) {
visibleItems = count;
invalidate();
}
/**
* Gets label
*
* @return the label
*/
public String getLabel() {
return label;
}
/**
* Sets label
*
* @param newLabel
* the label to set
*/
public void setLabel(String newLabel) {
if (label == null || !label.equals(newLabel)) {
label = newLabel;
labelLayout = null;
invalidate();
}
}
/**
* Adds wheel changing listener
*
* @param listener
* the listener
*/
public void addChangingListener(OnWheelChangedListener listener) {
changingListeners.add(listener);
}
/**
* Removes wheel changing listener
*
* @param listener
* the listener
*/
public void removeChangingListener(OnWheelChangedListener listener) {
changingListeners.remove(listener);
}
/**
* Notifies changing listeners
*
* @param oldValue
* the old wheel value
* @param newValue
* the new wheel value
*/
protected void notifyChangingListeners(int oldValue, int newValue) {
for (OnWheelChangedListener listener : changingListeners) {
listener.onChanged(this, oldValue, newValue);
}
}
/**
* Adds wheel scrolling listener
*
* @param listener
* the listener
*/
public void addScrollingListener(OnWheelScrollListener listener) {
scrollingListeners.add(listener);
}
/**
* Removes wheel scrolling listener
*
* @param listener
* the listener
*/
public void removeScrollingListener(OnWheelScrollListener listener) {
scrollingListeners.remove(listener);
}
/**
* Notifies listeners about starting scrolling
*/
protected void notifyScrollingListenersAboutStart() {
for (OnWheelScrollListener listener : scrollingListeners) {
listener.onScrollingStarted(this);
}
}
/**
* Notifies listeners about ending scrolling
*/
protected void notifyScrollingListenersAboutEnd() {
for (OnWheelScrollListener listener : scrollingListeners) {
listener.onScrollingFinished(this);
}
}
/**
* Gets current value
*
* @return the current value
*/
public int getCurrentItem() {
return currentItem;
}
/**
* Sets the current item. Does nothing when index is wrong.
*
* @param index
* the item index
* @param animated
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android 驴友社交系统源码-IT计算机-毕业设计.zip (445个子文件)
resources.ap_ 495KB
Lvyou.apk 563KB
proguard.cfg 1KB
WheelView.class 17KB
LYAddMemoryActivity.class 11KB
LYFriendsActivity.class 10KB
LYTogether2Activity.class 7KB
LYTabHostActivity.class 7KB
LYRegisterActivity.class 7KB
LYMemory2Activity.class 6KB
PhotoActivity.class 5KB
StoreMemoryActivity.class 5KB
LYAddMemoryActivity$1.class 5KB
R$id.class 4KB
LYRegisterActivity$2.class 4KB
LYMemoryActivity.class 4KB
LYRegisterBean.class 4KB
LYFriendsMeActivity.class 4KB
LYLoginActivity.class 4KB
GoogleMapActivity.class 4KB
ShowMemoryBean.class 4KB
FriendsMeBean.class 4KB
LYTogetherActivity.class 4KB
LYRegisterActivity$1.class 4KB
LYReplyMemoryBean.class 4KB
ShowRegisterBean.class 3KB
ShowRegisterHandler.class 3KB
AddPlaceActivity.class 3KB
LYFriendsMeActivity$myadapter.class 3KB
LYMemoryActivity$myadapter.class 3KB
translucentButton.class 3KB
ReceiveBean.class 3KB
LYTogetherActivity$myadapter.class 3KB
AttentionBean.class 3KB
FriendListBean.class 3KB
RMsgBean.class 3KB
ApplyBean.class 3KB
LYBuildMemoryHandler.class 3KB
LYFriendsInfoActivity.class 3KB
LoginBean.class 3KB
LYAddFriendsBean.class 3KB
AddPlaceActivity$1.class 3KB
LYMemory2Activity$5.class 3KB
StoreMemoryActivity$MoreAdapter.class 3KB
LYMemoryActivity$3$1.class 3KB
LYLoginActivity$2.class 3KB
UserVO.class 3KB
LYRegisterHandler.class 3KB
ActorActivity.class 3KB
LYAddMemoryActivity$2.class 3KB
ActorActivity$MoreAdapter.class 3KB
ShowMemoryHandler.class 3KB
FriendListHandler.class 3KB
LocationActivity.class 3KB
ApplyHandler.class 3KB
RMsgHandler.class 3KB
LYFriendsInfoActivity$2.class 3KB
LYOtherActivity.class 3KB
LYAddAttentionBean.class 3KB
LYBuildMemoryBean.class 3KB
AttentionHandler.class 3KB
LYSendInfoActivity.class 3KB
LYFriendsMeActivity$2.class 3KB
LYMemory2Activity$3.class 3KB
translucentButton$4.class 3KB
LYMemory2Activity$7.class 3KB
translucentButton$6.class 3KB
GetTogetherHandler.class 3KB
LYTogether2Activity$2.class 3KB
ShowReplyHandler.class 3KB
LYMemory2Activity$myadapter.class 3KB
LoginHandler.class 3KB
LYFriendsMeActivity$3$1.class 3KB
LYTogetherActivity$2.class 3KB
LYLoginActivity$1.class 3KB
LYMemoryActivity$2.class 3KB
LYFriendsActivity$1.class 2KB
LYFriendsActivity$3.class 2KB
LYFriendsActivity$5.class 2KB
LYFriendsInfoActivity$1.class 2KB
TogetherHandler.class 2KB
LYRegisterServlet.class 2KB
LYAddMsgBean.class 2KB
TogetherBean.class 2KB
ShowRegisterServlet.class 2KB
LYGalleryActivity$ImageAdapter.class 2KB
LYWelcomeActivity$LogoTask.class 2KB
DeleteApplyBean.class 2KB
FriendsMeServlet.class 2KB
LYOtherActivity$1.class 2KB
LYTogetherActivity$3$1.class 2KB
LYSendInfoActivity$2.class 2KB
LYAddMemoryActivity$5.class 2KB
LYAddMsgHandler.class 2KB
ReceiveServlet.class 2KB
DeleteFriendsBean.class 2KB
LYLoginActivity$3.class 2KB
YanzhengActivity.class 2KB
LYTabHostActivity$myadapter.class 2KB
StoreMemoryActivity$1.class 2KB
共 445 条
- 1
- 2
- 3
- 4
- 5
资源评论
- weixin_509202782022-04-29用户下载后在一定时间内未进行评价,系统默认好评。
- m0_739663902023-05-13发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- 爱吃青菜的萝卜2023-06-01这个资源内容超赞,对我来说很有价值,很实用,感谢大佬分享~
芝麻粒儿
- 粉丝: 5w+
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功