在網站找了垂直佈局的seekbar方法http://blog.csdn.net/jiahui524/article/details/8188651
自己實踐了下。在修改seekbar的背景圖片時發現得把圖片順時針傾斜90度才能把圖片完全顯示出來。
如下圖片heart7.png
圖片heart8.png:
圖片jian.png
seekbar的垂直佈局就是垂直顯示完整圖片了
OK,上菜。。
java文件
1. VerticalSeekBar.java
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
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) {
super(context, attrs);
}
public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
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);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}
protected void onDraw(Canvas c) {
c.rotate(-90);
c.translate(-getHeight(),0);
super.onDraw(c);
}
@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:
int i=0;
i=getMax() - (int)(getMax() * event.getY() / getHeight());
setProgress(i);
Log.i("Progress",getProgress()+"");
onSizeChanged(getWidth(),getHeight(), 0, 0);
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}
}
2. main.xml
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical" >
<cn.org.farseer.android.Phone.VerticalSeekBar
android:id="@+id/callseek"
android:layout_width="220dp"
android:layout_height="60dp"
android:layout_margin="10dp"
android:max="100"
android:progress="50"
android:progressDrawable="@drawable/seekbar_call"
android:thumb="@drawable/thumbj"/>
</LinearLayout>
3. seekbar_call.xml
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:drawable="@drawable/heart8">
</item>
<item android:id="@android:id/progress"
android:drawable="@drawable/heart7">
</item>
</layer-list>
4. thumbj.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下狀態 -->
<item
android:state_pressed="true"
android:drawable="@drawable/jian"
/>
<!-- 普通無焦點狀態 -->
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/jian"
/>
</selector>
在java主代碼中只要
private VerticalSeekBar volumeSeek;
即可按照正常使用SeekBar的方法即可。