`
phenom
  • 浏览: 409342 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

android竖着的seekbar

阅读更多
以前网上有位虾士发过一篇文章是关于竖着的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 竖着的SeekBar

    android[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] Android 竖着的SeekBar[Android实例] ...

    android实例竖着的seekbar

    在Android开发中,SeekBar是一种常用的用户界面组件,它允许用户通过滑动条来选择一个介于最小值和最大值之间的数值。通常情况下,SeekBar是水平排列的,但有时根据设计需求,我们可能需要创建一个垂直方向的SeekBar...

    [Android实例] Android 竖着的SeekBar.zip

    这个【Android实例】 Android 竖着的SeekBar.zip文件包含了一个源码示例,用于展示如何自定义一个垂直方向的SeekBar。在Android中,我们可以通过继承SeekBar类并重写其相关方法来实现这一功能。以下是一些关键知识点...

    [Android实例] Android 竖着的SeekBar.rar

    我们将深入讲解这个"Android竖着的SeekBar"实例,了解其背后的实现原理和代码结构。 首先,要创建竖直的SeekBar,我们需要自定义一个View类,并继承自SeekBar。在Android SDK中,SeekBar的滑块运动是沿着X轴进行的...

    Android实例Android 竖着的SeekBar.rar

    在Android开发中,SeekBar是一个非常常见的控件,它允许用户通过滑动来选择一个介于最小值和最大值之间的数值。然而,默认情况下,SeekBar是水平布局的,这可能不满足某些特殊界面设计的需求。在本实例中,我们将...

    课程设计[Android实例] Android 竖着的SeekBar源代码下载

    课程设计[Android实例] Android 竖着的SeekBar源代码下载 课程设计[Android实例] Android 竖着的SeekBar源代码下载 课程设计[Android实例] Android 竖着的SeekBar源代码下载

    Android应用源码[实例] 竖着的SeekBar-IT计算机-毕业设计.zip

    综上所述,这个竖着的SeekBar实例涵盖了Android自定义组件开发、布局管理、事件处理、动画、数据绑定等多个方面,对于深入理解和实践Android应用开发具有很高的价值。通过这个实例,开发者不仅可以学习到如何创新地...

    Android 竖着的SeekBar源代码.zip

    Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip Android 竖着的SeekBar源代码.zip

    Android 竖着的SeekBar-Android 竖着的SeekBar.zip

    但这种方法相对复杂,需要一定的Android绘图和事件处理知识。 方法二:使用Rotate动画 另一种较为简单的方法是使用旋转(Rotate)动画将水平的SeekBar旋转90度来模拟竖直效果。但这种方法有一个明显的缺点,即虽然...

    Android实例之[Android实例] Android 竖着的SeekBar

    在Android开发中,SeekBar是一个非常常见的控件,它允许用户通过滑动来选择一个介于最小值和最大值之间的数值。通常,SeekBar是水平排列的,但有时开发者可能需要将其设置为垂直显示,以适应特定的UI设计需求。本...

    Android 竖着的SeekBar.zip

    标题“Android 竖着的SeekBar”指向的就是这样一个自定义实现,即在一个Android Studio项目中创建一个垂直滚动的SeekBar。 在Android Studio中开发自定义View通常涉及以下步骤: 1. 创建一个新的Java类,继承自...

    4.[Android实例] Android 竖着的SeekBar.zip

    4.[Android实例] Android 竖着的SeekBar

Global site tag (gtag.js) - Google Analytics