自定义seekbar和垂直seekbar.docx_第1页
自定义seekbar和垂直seekbar.docx_第2页
自定义seekbar和垂直seekbar.docx_第3页
自定义seekbar和垂直seekbar.docx_第4页
自定义seekbar和垂直seekbar.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

从网上下载的demo,自己修改了一下。效果图:main.xml: 图片:progress_buffering.png:progress_playing.png:thumb_f.png:thumb_normal.png:voice_progress_buffering.png:seekbar_style.xml:进度的style !- -!- - !- - !- - seekbar_thumb.xml:拖拽的那个圆点的style 自定义垂直的seekbar:从网上找的public class VerticalSeekBar extends SeekBar private boolean mIsDragging; private float mTouchDownY; private int mScaledTouchSlop; private boolean isInScrollingContainer = false; public boolean isInScrollingContainer() return isInScrollingContainer; public void setInScrollingContainer(boolean isInScrollingContainer) this.isInScrollingContainer = isInScrollingContainer; /* * On touch, this offset plus the scaled value from the position of the * touch will form the progress value. Usually 0. */ float mTouchProgressOffset; public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle); mScaledTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); public VerticalSeekBar(Context context, AttributeSet attrs) super(context, attrs); public VerticalSeekBar(Context context) super(context); Override protected void onSizeChanged(int w, int h, int oldw, int oldh) super.onSizeChanged(h, w, oldh, oldw); Override protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth(); Override protected synchronized void onDraw(Canvas canvas) canvas.rotate(-90); canvas.translate(-getHeight(), 0); super.onDraw(canvas); Override public boolean onTouchEvent(MotionEvent event) if (!isEnabled() return false; switch (event.getAction() case MotionEvent.ACTION_DOWN: if (isInScrollingContainer() mTouchDownY = event.getY(); else setPressed(true); invalidate(); onStartTrackingTouch(); trackTouchEvent(event); attemptClaimDrag(); onSizeChanged(getWidth(), getHeight(), 0, 0); break; case MotionEvent.ACTION_MOVE: if (mIsDragging) trackTouchEvent(event); else final float y = event.getY(); if (Math.abs(y - mTouchDownY) mScaledTouchSlop) setPressed(true); invalidate(); onStartTrackingTouch(); trackTouchEvent(event); attemptClaimDrag(); onSizeChanged(getWidth(), getHeight(), 0, 0); break; case MotionEvent.ACTION_UP: if (mIsDragging) trackTouchEvent(event); onStopTrackingTouch(); setPressed(false); else / Touch up when we never crossed the touch slop threshold / should / be interpreted as a tap-seek to that location. onStartTrackingTouch(); trackTouchEvent(event); onStopTrackingTouch(); onSizeChanged(getWidth(), getHeight(), 0, 0); / ProgressBar doesnt know to repaint the thumb drawable / in its inactive state when the touch stops (because the / value has not apparently changed) invalidate(); break; return true; private void trackTouchEvent(MotionEvent event) final int height = getHeight(); final int top = getPaddingTop(); final int bottom = getPaddingBottom(); final int available = height - top - bottom; int y = (int) event.getY(); float scale; float progress = 0; / 涓嬮潰鏄渶灏忓? if (y height - bottom) scale = 0.0f; else if (y top) scale = 1.0f; else scale = (float) (available - y + top) / (float) available; progress = mTouchProgressOffset; final int max = getMax(); progress += scale * max; setProgress(int) progress); /* * This is called when the user has started touching this widget. */ void onStartTrackingTouch() mIsDragging = true; /* * This is called when the user either releases his touch or the touch is * canceled. */ void onStopTrackingTouch() mIsDragging = false; private void attemptClaimDrag() ViewParent p = getParent(); if (p !

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论