나는 SeekBar를 더 부드럽게 움직이려고 노력하고있다. 저는 슬라이더 타입 구현을위한 3 가지 옵션이있는 SeekBar를 얻었으므로 이것을 수행합니다.Android 탐색 바를 원활하게 움직이게하려면 어떻게해야합니까?
"Yes", "No option", "No"의 세 가지 옵션으로 멋진 부드러운 슬라이더를 만들려고합니다. 앱의 기능과 SeekBar가 가장 쉽고 간단합니다.
나는 안드로이드 애니메이션을보고 시도하고 사람 :
나는 SeekBar를 더 부드럽게 움직이려고 노력하고있다. 저는 슬라이더 타입 구현을위한 3 가지 옵션이있는 SeekBar를 얻었으므로 이것을 수행합니다.Android 탐색 바를 원활하게 움직이게하려면 어떻게해야합니까?
"Yes", "No option", "No"의 세 가지 옵션으로 멋진 부드러운 슬라이더를 만들려고합니다. 앱의 기능과 SeekBar가 가장 쉽고 간단합니다.
나는 안드로이드 애니메이션을보고 시도하고 사람 :
내 자신의 컨트롤을 내장 좋을 텐데 어떤 도움이 될 수 있다면 그래서, 조금 비트 복잡한 것 같습니다. 작업 완료 :) 코드 here
검색 범위를 부드럽게 움직이면서도 제한된 범위의 값으로 스냅하려면 다음 해결책을 찾았습니다.
<SeekBar
android:id="@+id/sldProgress"
style="@style/MySliderStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50" />
<TextView
android:id="@+id/lblProgress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5" />
이
당신이 (당신의 활동에 다음 코드를 사용하여 안드로이드의 값을 변경할 수 있습니다 : 당신이 당신의 레이아웃 다음보기가 가정에 따라 아래의 코드에서 위의 XML에서 최대, 그리고 부드러움 계수를 당신의 요구 - 높은 값 = 부드러운가) :
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sliderListener sldListener = new sliderListener();
SeekBar sldProgress = (SeekBar) findViewById(R.id.sldProgress);
sldProgress.setOnSeekBarChangeListener(sldListener);
}
private class sliderListener implements OnSeekBarChangeListener {
private int smoothnessFactor = 10;
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = Math.round(progress/smoothnessFactor);
TextView lblProgress = (TextView) findViewById(R.id.lblProgress);
lblProgress.setText(String.valueOf(progress));
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onStopTrackingTouch(SeekBar seekBar) {
seekBar.setProgress(Math.round((seekBar.getProgress() + (smoothnessFactor/2))/smoothnessFactor) * smoothnessFactor);
}
}
}
누가 이것을 downvoted 누구, 대답에 잘못이 무엇인지 설명하십시오 - 잊지, downvoting은 극단적 인 경우에만 노력에 답변을 갔다거나 대답은 위험한 경우에만 사용하기위한 것입니다. 대답이 위험하다면 이유를 알고 싶습니다! 고맙습니다. – Russ
Integer.parseInt (String.valueOf (Math.round (progress/smoothnessFactor)))); 이것은 옳지 않은 것처럼 보입니다. progress/smoothnessFactor는 항상 int를 반환하므로 둘레를 둘 필요가 없습니다. 그런 다음 문자열로 변환 한 다음 int로 다시 변환합니다. – theelfismike
그게 전부입니까? 귀하의 응용 프로그램을 날려 버릴 건가요? 불필요한 전환을 제거하기 위해 코드를 편집했습니다 (누구나 할 수 있었으므로 투표 할 필요가 없습니다). – Russ
당신은 그것을 위해 일을 할 것입니다 스스로 단지 사용자가 안드로이드 애니메이션 아무것도 구축 할 필요가 없습니다 당신
kotlion
에 writen 코드mySeekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
//Todo: code
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar) {
if (seekBar.progress > 70) {
ObjectAnimator.ofInt(seekBar, "progress", 100).setDuration(100).start()
} else if (seekBar.progress < 30) {
ObjectAnimator.ofInt(seekBar, "progress", 0).setDuration(100).start()
} else {
ObjectAnimator.ofInt(seekBar, "progress", 50).setDuration(100).start()
}
}
})
+1 앞으로 방문자를 도울 수 있도록 소스 코드를 추가 할 수 있습니다. –
신청서의 최신판을 게시하자마자 게시하겠습니다. 어쨌든 앱의 오픈 소스라고 생각합니다. –
약속대로 - https://github.com/kennydude/Speaker/blob/master/src/me/kennydude/speaker/SmoothSeekBar.java 해당 위치가 코드 업데이트로 업데이트됩니다. –