以前网上有位虾士发过一篇文章是关于竖着的seekbar,但是也没有确定是否可行.最近看了vlc的音效处理.就是用到竖着的seekbar,所以分享下代码:
也可以自己查看它的源码:
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.SeekBar;
public class VerticalSeekBar extends SeekBar {
public VerticalSeekBar(Context context) {
super(context);
}
public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public VerticalSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
//这是一个重点,高宽倒置
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());
}
//这是一个重点
protected void onDraw(Canvas c) {
c.rotate(-90);
c.translate(-getHeight(), 0);
super.onDraw(c);
}
//这是一个重点,高宽倒置
@Override
public synchronized void setProgress(int progress) {
super.setProgress(progress);
onSizeChanged(getWidth(), getHeight(), 0, 0);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled()) {
return false;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
setProgress(getMax() - (int) (getMax() * event.getY() / getHeight()));
onSizeChanged(getWidth(), getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}
没有重点了,直接使用吧.
分享到:
相关推荐
android[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] ...
在Android开发中,SeekBar是一种常用的用户界面组件,它允许用户通过滑动条来选择一个介于最小值和最大值之间的数值。通常情况下,SeekBar是水平排列的,但有时根据设计需求,我们可能需要创建一个垂直方向的SeekBar...
这个【Android实例】 Android 竖着的SeekBar.zip文件包含了一个源码示例,用于展示如何自定义一个垂直方向的SeekBar。在Android中,我们可以通过继承SeekBar类并重写其相关方法来实现这一功能。以下是一些关键知识点...
我们将深入讲解这个"Android竖着的SeekBar"实例,了解其背后的实现原理和代码结构。 首先,要创建竖直的SeekBar,我们需要自定义一个View类,并继承自SeekBar。在Android SDK中,SeekBar的滑块运动是沿着X轴进行的...
在Android开发中,SeekBar是一个非常常见的控件,它允许用户通过滑动来选择一个介于最小值和最大值之间的数值。然而,默认情况下,SeekBar是水平布局的,这可能不满足某些特殊界面设计的需求。在本实例中,我们将...
课程设计[Android实例] Android 竖着的SeekBar源代码下载 课程设计[Android实例] Android 竖着的SeekBar源代码下载 课程设计[Android实例] Android 竖着的SeekBar源代码下载
综上所述,这个竖着的SeekBar实例涵盖了Android自定义组件开发、布局管理、事件处理、动画、数据绑定等多个方面,对于深入理解和实践Android应用开发具有很高的价值。通过这个实例,开发者不仅可以学习到如何创新地...
Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip
但这种方法相对复杂,需要一定的Android绘图和事件处理知识。 方法二:使用Rotate动画 另一种较为简单的方法是使用旋转(Rotate)动画将水平的SeekBar旋转90度来模拟竖直效果。但这种方法有一个明显的缺点,即虽然...
在Android开发中,SeekBar是一个非常常见的控件,它允许用户通过滑动来选择一个介于最小值和最大值之间的数值。通常,SeekBar是水平排列的,但有时开发者可能需要将其设置为垂直显示,以适应特定的UI设计需求。本...
标题“Android 竖着的SeekBar”指向的就是这样一个自定义实现,即在一个Android Studio项目中创建一个垂直滚动的SeekBar。 在Android Studio中开发自定义View通常涉及以下步骤: 1. 创建一个新的Java类,继承自...
4.[Android实例] Android 竖着的SeekBar