垂直的VerticalSeekBar
来源:互联网 发布:诈骗犯罪抓获数据 编辑:程序博客网 时间:2024/04/30 06:18
我们平时所使用的SeekBar控件为水平拉动的,最近做项目有个音量调节,需要设置垂直方向的拉动条,那么就要自己来写一个VerticalSeekBar实现,很简单的,只需将VerticalSeekBar来继承SeekBar并实现里面的一些方法即可,下面附上源码:
package com.junto.staffcar.main.ui;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.SeekBar;/** * Created by WangJinyong on 2017/11/6. */@SuppressLint("AppCompatCustomView")public class VSeekBar extends SeekBar { public VSeekBar(Context context) { super(context); } public VSeekBar(Context context, AttributeSet attrs) { super(context, attrs); } public VSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @SuppressLint("NewApi") public VSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @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(widthMeasureSpec, heightMeasureSpec); } @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: 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; }}
在使用的时候:
<com.junto.staffcar.main.ui.VSeekBar android:id="@+id/verticalSeekBar" android:layout_width="32dp" android:layout_height="100dp" android:max="100" />
//seekBar设置监听 seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { /** * seekbar改变时的事件监听处理 * @param seekBar * @param progress * @param fromUser */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv_seekBar.setText("水平当前进度:"+progress+"%"); } /** * 按住seekbar时的事件监听处理 * @param seekBar */ @Override public void onStartTrackingTouch(SeekBar seekBar) { Log.e("tag","按住seekbar"); } /** * 放开seekbar时的时间监听处理 * @param seekBar */ @Override public void onStopTrackingTouch(SeekBar seekBar) { Log.e("tag","放开seekbar"); } });
阅读全文
0 0
- 垂直的SeekBar:VerticalSeekBar
- 垂直的VerticalSeekBar
- VerticalSeekBar 垂直拖动条的实现
- Android---垂直的进度条(VerticalSeekBar、VerticalProgressBar)
- 垂直进度条VerticalSeekBar
- android 垂直 SeekBar 源代码(VerticalSeekBar)
- android 垂直 SeekBar 源代码(VerticalSeekBar)
- 竖直(垂直)VerticalSeekBar和VerticalProgressBar
- 安卓原生垂直进度条剥离打包(VerticalSeekBar)
- Android:VerticalSeekBar
- VerticalSeekBar 竖直滑动条
- VerticalSeekbar自适应屏幕旋转响应
- 垂直的算法
- Google的垂直搜索
- 垂直搜索引擎的选型
- 垂直搜索引擎的选型
- 五花八门的垂直搜索引擎
- 垂直搜索引擎的关键技术
- Mongo分组取每组最大的一条记录
- 51nod 1548 欧姆诺姆和糖果
- Spring Boot(七):Spring Security如何启用与禁用CSRF
- PL/SQL批量运行SQL语句
- 微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
- 垂直的VerticalSeekBar
- zookeeper 之配置管理
- NLP 探索
- SOA、SOAP、RPC、REST、DUBBO的区别与联系
- Mysql数据库基础-查询数据
- linux下安装7z命令及7z命令的使用
- 解决内存溢出的其中一个简单办法。android:largeHeap="true"
- HTML5权威指南笔记:36-使用canvas元素(2)
- Linux内核中读写文件数据的方法