① 在android的音樂播放器中用到的seekBar控制項怎麼用
int position = mediaPlayer.getCurrentPosition(); int total = mediaPlayer.getDuration(); int max = seekBar.getMax(); if (position>=0&&total!=0) { seekBar.setProgress(position*max/total); } 這是隨著散渣播放更新進度條的,拖動視頻和這個差不沖纖悄多。豎卜不懂追問。
② 關於android的SeekBar
SeekBar不可以顯示文字
(可以去胡咐派查閱SDK資料看其並沒有SetText或直接在布局設置的時候把SeekBar拉進去,簡吵看其屬性中,沒有Text屬性這一個)
但你可以用一個SeekBar和一個TextView組合成一個自定義的組合控制項
這樣子褲賀來通過這個組合控制項的屬性來達成你所想要的顯示文字的效果。
③ android用兩個SeekBar分別控制X,Y值
這不挺敗搏簡單么,放兩個高枯羨seekbar並完成onProgressChanged的監聽就行了。監聽相應戚拍seekbar的值的變化,改變相應的x,y值。
④ Android SeekBar,動態顯示進度且隨SeekBar一起移動
花了點時間做,其實這個東西本沒有什麼,裂肢主要的問題就是在於seekBar不是頂格的,存在一個空隙,這個空隙又不知道值是多少,所以這個很難計算,後來去看了資料,paddingStart = 0dp,PaddingEnd=0dp 可以使進度條填充到整肆啟世個界面,但也不大符旁櫻合需求,所以設定paddingStart = 15dp,既能不改變原來seekbar的效果,也可以知道這個間隙是多少。
這里就是計算具體的textview位置的地方了
textview的文本是固定寬度的,動態的太難控制了,不是這種簡單的操作能夠搞定的。
seekbar的寬度就隨意了,注意設置下paddingStart 和 paddingEnd。
xml 如下:
好了效果實現了,這種實現方式算是比較簡單了。
⑤ 請問下android里邊的SeekBar控制項
控制一下滑動的范圍,要麼就看看能不能使seekbar聚焦的時候,把滑動的設置為無效。
⑥ 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中怎麼用SeekBar控制視頻播放的進度
android中用SeekBar控制視頻播放的進度其實現方法如下:
1:第一個類是廳稿自定義桐察的一個類 也就是SeekBar上方會跟隨其一塊移動的控制項,其實非常簡單的一個類
package com.example.textmovebyseekbar;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
//import android.widget.AbsoluteLayout;
public class TextMoveLayout extends ViewGroup {
public TextMoveLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public TextMoveLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public TextMoveLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
}
}
?
2: 第二類就是MainActivity了,代碼很簡單!
package com.example.textmovebyseekbar;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends Activity {
private SeekBar seekbar = null;
private String startTimeStr = "19:30:33";
private String endTimeStr = "21:23:21";
private TextView text, startTime, endTime;
/**
* 視頻組中第一個和最後一個視頻之間的總時長
*/
private int totalSeconds = 0;
/扮輪孝**
* 屏幕寬度
*/
private int screenWidth;
/**
* 自定義隨著拖動條一起移動的空間
*/
private TextMoveLayout textMoveLayout;
private ViewGroup.LayoutParams layoutParams;
/**
* 托動條的移動步調
*/
private float moveStep = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video_fast_search);
screenWidth = getWindowManager().getDefaultDisplay().getWidth();
text = new TextView(this);
text.setBackgroundColor(Color.rgb(245, 245, 245));
text.setTextColor(Color.rgb(0, 161, 229));
text.setTextSize(16);
layoutParams = new ViewGroup.LayoutParams(screenWidth, 50);
textMoveLayout = (TextMoveLayout) findViewById(R.id.textLayout);
textMoveLayout.addView(text, layoutParams);
text.layout(0, 20, screenWidth, 80);
/**
* findView
*/
seekbar = (SeekBar) findViewById(R.id.seekbar);
startTime = (TextView) findViewById(R.id.start_time);
endTime = (TextView) findViewById(R.id.end_time);
/**
* setListener
*/
seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
searchVideos();
}
public void searchVideos() {
startTime.setText(startTimeStr);
endTime.setText(endTimeStr);
text.setText(startTimeStr);
totalSeconds = totalSeconds(startTimeStr, endTimeStr);
seekbar.setEnabled(true);
seekbar.setMax(totalSeconds);
seekbar.setProgress(0);
moveStep = (float) (((float) screenWidth / (float) totalSeconds) * 0.8);
}
private class OnSeekBarChangeListenerImp implements
SeekBar.OnSeekBarChangeListener {
// 觸發操作,拖動
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
text.layout((int) (progress * moveStep), 20, screenWidth, 80);
text.setText(getCheckTimeBySeconds(progress, startTimeStr));
}
// 表示進度條剛開始拖動,開始拖動時候觸發的操作
public void onStartTrackingTouch(SeekBar seekBar) {
}
// 停止拖動時候
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
/**
* 計算連個時間之間的秒數
*/
private static int totalSeconds(String startTime, String endTime) {
String[] st = startTime.split(":");
String[] et = endTime.split(":");
int st_h = Integer.valueOf(st[0]);
int st_m = Integer.valueOf(st[1]);
int st_s = Integer.valueOf(st[2]);
int et_h = Integer.valueOf(et[0]);
int et_m = Integer.valueOf(et[1]);
int et_s = Integer.valueOf(et[2]);
int totalSeconds = (et_h - st_h) * 3600 + (et_m - st_m) * 60
+ (et_s - st_s);
return totalSeconds;
}
/**
* 根據當前選擇的秒數還原時間點
*
* @param args
*/
private static String getCheckTimeBySeconds(int progress, String startTime) {
String return_h = "", return_m = "", return_s = "";
String[] st = startTime.split(":");
int st_h = Integer.valueOf(st[0]);
int st_m = Integer.valueOf(st[1]);
int st_s = Integer.valueOf(st[2]);
int h = progress / 3600;
int m = (progress % 3600) / 60;
int s = progress % 60;
if ((s + st_s) >= 60) {
int tmpSecond = (s + st_s) % 60;
m = m + 1;
if (tmpSecond >= 10) {
return_s = tmpSecond + "";
} else {
return_s = "0" + (tmpSecond);
}
} else {
if ((s + st_s) >= 10) {
return_s = s + st_s + "";
} else {
return_s = "0" + (s + st_s);
}
}
if ((m + st_m) >= 60) {
int tmpMin = (m + st_m) % 60;
h = h + 1;
if (tmpMin >= 10) {
return_m = tmpMin + "";
} else {
return_m = "0" + (tmpMin);
}
} else {
if ((m + st_m) >= 10) {
return_m = (m + st_m) + "";
} else {
return_m = "0" + (m + st_m);
}
}
if ((st_h + h) < 10) {
return_h = "0" + (st_h + h);
} else {
return_h = st_h + h + "";
}
return return_h + ":" + return_m + ":" + return_s;
}
}
3: 接下來這個就是布局文件了,其中會用到一些色值!
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_whitef5"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.example.textmovebyseekbar.TextMoveLayout
android:id="@+id/textLayout"
android:layout_width="fill_parent"
android:layout_height="40dp" />
<SeekBar
android:id="@+id/seekbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:maxHeight="4dp"
android:minHeight="4dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:progressDrawable="@drawable/po_seekbar"
android:thumb="@drawable/seekbar_thumb" />
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/start_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="14dp"
android:textColor="@color/bg_lin_95" />
<TextView
android:id="@+id/end_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="14dp"
android:textColor="@color/bg_lin_95" />
</RelativeLayout>
</LinearLayout>
4: android:progressDrawable="@drawable/po_seekbar"這句會引用一個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>
<solid android:color="#c6c6c6" />
</shape>
</item>
<item android:id="@*android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#c6c6c6" />
</shape>
</clip>
</item>
<item android:id="@*android:id/progress">
<clip>
<shape>
<solid android:color="#06a7fa" />
</shape>
</clip>
</item>
</layer-list>
5:android:thumb="@drawable/seekbar_thumb"也會引用一個xml文件 這其中又有用到兩張圖片
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/video_fast_search_nomal" android:state_focused="true" android:state_pressed="false"/>
<item android:drawable="@drawable/video_fast_search_press" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/video_fast_search_press" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/video_fast_search_nomal"/>
</selector>
⑧ 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更新,
⑨ seekbar在android中什麼意思
激老SeekBar是ProgressBar的擴展,在其基礎上增加了一個可拖動的thumb(註:就是那個可拖動的圖標)。用戶可以觸摸thumb並向左或向右拖動,再答鉛銀或者可以使用方向鍵都可以設置當前的進度等級。不建議把可以獲取焦點清宴的widget放在SeekBar的左邊或右邊。
⑩ Android如何點擊圖片顯示seekBar
1、通過findViewById找到圖片的滑塵控制項;
2、給顯示圖散睜片的控制項設置點擊事件;
3.可以使沖讓歲用src和background的嵌套效果