㈠ android關於自定義seekbar控制項的問題(將橫向seekbar改成豎向seekbar)
是不是按鍵值出錯了,你在onKeyDown里每次按鍵都列印出來按鍵值System.out.println("鍵值:"+keyCode);
然後看看按鍵值是不是跟你寫的對應
㈡ android 怎麼實現類似SeekBar的單向調節改成雙向調節范圍
網上有個重寫View實現的,SeekBarPressure
以下是一個使用SeekBar來調節系統音量的實例:
XML代碼:
<SeekBar
android:id="@+id/sound"
android:layout_width="150px"
android:layout_height="10px"
android:max="100" //設置拖動條最大值
android:progress="10" //設置拖動條當前值
android:progressDrawable="@layout/seekbar_style" //拖動條樣式
android:thumb="@layout/thumb" /> //滑塊樣式
seekbar_style.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">
<shape>
<corners android:radius="10dip" />
<gradient android:startColor="#ffffffff"
android:centerColor="#ff000000" android:endColor="#ff808A87"
android:centerY="1" android:angle="270" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="10dip" />
<gradient android:startColor="#ffffffff"
android:centerColor="#ffFFFF00" android:endColor="#ffAABD00"
android:centerY="1" android:angle="270" />
</shape>
</clip>
</item>
</layer-list>
thumb.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/thumb_normal"
/>
<!-- 普通無焦點狀態 -->
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/thumb_normal"
/>
</selector>
bacon_seekbar.xml:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:id="@+android:id/background"
android:drawable="@drawable/thumb_normal" />
<item
android:id="@+android:id/SecondaryProgress"
android:drawable="@drawable/thumb_normal" />
<item
android:id="@+android:id/progress"
android:drawable="@drawable/thumb_normal" />
</layer-list>
JAVA代碼:
public class PianoActivity extends Activity {
/** Called when the activity is first created. */
private ImageButton imageButton_white1;
private MediaPlayer mediaPlayer01;
public AudioManager audiomanage;
private TextView mVolume ; //顯示當前音量
public SeekBar soundBar;
private int maxVolume, currentVolume;
private int volume=0; //初始化聲音
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mediaPlayer01 = new MediaPlayer();
imageButton_white1=(ImageButton)findViewById(R.id.white1);
final SeekBar soundBar=(SeekBar)findViewById(R.id.sound); //音量設置
mVolume = (TextView)findViewById(R.id.mVolume);
audiomanage = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
maxVolume = audiomanage.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //獲取系統最大音量
soundBar.setMax(maxVolume); //拖動條最高值與系統最大聲匹配
currentVolume = audiomanage.getStreamVolume(AudioManager.STREAM_MUSIC); //獲取當前值
soundBar.setProgress(currentVolume);
mVolume.setText(currentVolume*100/maxVolume + " %");
soundBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() //調音監聽器
{
public void onProgressChanged(SeekBar arg0,int progress,boolean fromUser)
{
audiomanage.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
currentVolume = audiomanage.getStreamVolume(AudioManager.STREAM_MUSIC); //獲取當前值
soundBar.setProgress(currentVolume);
mVolume.setText(currentVolume*100/maxVolume + " %");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
TextView的XML沒有給出,需要自己添加。
㈢ android studio怎麼修改seekbar樣式
android:id="@+id/player_seekbar"
android:layout_width="245px"
android:layout_height="25px"
android:progressDrawable="@drawable/seekbar_style"
android:thumb="@drawable/thumb"
android:paddingLeft="16px"
android:paddingRight="15px"
android:paddingTop="5px"
android:paddingBottom="5px"
android:progress="0"
android:max="0"
android:secondaryProgress="0"
/>
Android:progressDrawable="@drawable/seekbar_style"背景條
seekbar_style配置如下:
Xml代碼
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
㈣ 求助,Android裡面的seekbar怎麼垂直顯示
把seekbar復寫了。。旋轉90度就可以了。
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.SeekBar;
public class SlideBar extends SeekBar {
private int oHeight = 100;
private int oWidth = 30;
private int oProgress = -1;
private int oOffset = -1;;
private float xPos = -1;
private float yPos = -1;
private int top = -1;
private int bottom = -1;
private int left = -1;
private int right = -1;
public SlideBar(Context context) {
super(context);
}
public SlideBar(Context context, AttributeSet attrs) {
super(context, attrs);
oOffset = this.getThumbOffset();
oProgress = this.getProgress();
}
public SlideBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = View.MeasureSpec.getSize(heightMeasureSpec);
oHeight = height;
this.setMeasuredDimension(oWidth, oHeight);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(h, w, oldw, oldh);
}
// 設置layout
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
left = l;
right = r;
top = t;
bottom = b;
}
// 畫出滾動條
protected void onDraw(Canvas c) {
// 旋轉
c.rotate(90);
//控制左右位置
c.translate(0,-30);
super.onDraw(c);
}
public boolean onTouchEvent(MotionEvent event) {
xPos = event.getX();
yPos = event.getY();
float progress = 1-(yPos-this.getTop())/(this.getBottom()- this.getTop());
oOffset = this.getThumbOffset();
oProgress = this.getProgress();
Log.d("offset" + System.nanoTime(), new Integer(oOffset).toString());
Log.d("progress" + System.nanoTime(), new Integer(oProgress).toString());
float offset;
offset = progress * (this.getBottom() - this.getTop());
this.setThumbOffset((int)offset);
Log.d("offset_postsetprogress" + System.nanoTime(), new Integer(oOffset).toString());
Log.d("progress_postsetprogress" + System.nanoTime(), new Integer(oProgress).toString());
// this.setProgress((int)(100*event.getY()/this.getBottom()));
this.setProgress((int)(100 * progress));
return true;
}
}
㈤ android開發中,seekBar在拖動時進度會改變,如何讓音樂播放進度隨之改變
seekbar.setOnSeekBarChangeListener(new seekbarListener());
//這個監聽seekbar變化的,一旦有變,變化到哪progress表示
private class seekbarListener implements OnSeekBarChangeListener{
@Override
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
if(fromUser==true){
mediaplay.seekTo(progress);//這里就是音樂播放器播放的位子
}
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
}
還有就是seekbar的進度條變化用Handler更新,
㈥ android 帶節點的seekbar怎麼搞
sdk裡面沒有提供設置成垂直的方法 要自己去實現 查看原帖>>
㈦ Android開發中SeekBar的值改變後,系統如何得到其改變後的值
SeekBar是ProgressBar的擴展,在其基礎上增加了一個可拖動的thumb(註:就是那個可拖動的圖標)。用戶可以觸摸thumb並向左或向右拖動,再或者可以使用方向鍵都可以設置當前的進度等級。不建議把可以獲取焦點的widget放在SeekBar的左邊或右邊。
SeekBar的setProgress是對Seekbar進行進度設置的方法,
通過使用seekbar.setProgress(叮笭恥蝗儕豪抽通處坤0),可以設置成 seekbar的最小值