<?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="#101527"
>
<RelativeLayout
android:layout_width="600px"
android:layout_height="300px">
<SeekBar
android:layout_centerInParent="true"
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="4"
android:maxHeight="3.0dp"
android:progress="1"
android:background="@null"
android:shape="oval"
android:splitTrack="false"
android:secondaryProgress="0"
android:progressDrawable="@drawable/seeker_bar"
android:thumb="@drawable/handler" />
<RelativeLayout
android:layout_width="400dp"
android:layout_height="wrap_content"
android:layout_below="@id/seekbar"
android:layout_marginLeft="30px"
android:layout_marginTop="-10px">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="0"
android:textColor="#77838f"
android:textSize="11sp"
android:layout_marginTop="-6px" />
<TextView
android:layout_marginTop="-6px"
android:layout_marginRight="30px"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="5"
android:textColor="#77838f"
android:textSize="11sp" />
</RelativeLayout>
<View
android:id="@+id/Torque_map_DIV"
style="@style/Divider3"
android:layout_width="2dp"
android:layout_height="5dp"
android:layout_centerVertical="true"
android:layout_marginLeft="174px"
android:layout_marginTop="28px"
android:layout_marginBottom="30px"
android:background="@drawable/selector" />
<View
android:id="@+id/Torque_map_DIV2"
style="@style/Divider3"
android:layout_width="2dp"
android:layout_height="5dp"
android:layout_centerVertical="true"
android:layout_marginLeft="296px"
android:layout_marginTop="28px"
android:layout_marginBottom="30px"
android:background="@drawable/selector" />
<View
android:id="@+id/Torque_map_DIV3"
style="@style/Divider3"
android:layout_width="2dp"
android:layout_height="5dp"
android:layout_centerVertical="true"
android:layout_marginLeft="418px"
android:layout_marginTop="28px"
android:layout_marginBottom="30px"
android:background="@drawable/selector" />
</RelativeLayout>
</LinearLayout>
간단한 xml입니다.
간단한 방법으로 위치를 조절할 수 있습니다.
public class Seekbar_view_progress extends Activity {
public int number1;
View view1,view2,view3;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seekbar_view_progress);
final SeekBar seekbar = (SeekBar) findViewById(R.id.seekbar);
view1 = (View)findViewById(R.id.Torque_map_DIV);
view2 = (View)findViewById(R.id.Torque_map_DIV2);
view3 = (View)findViewById(R.id.Torque_map_DIV3);
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
//Seekbar의 상태(정도)가 변경되었을 때 실행될 사항
progressNumber1();
update();
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//Seekbar의 움직임이 시작될 때 실행될 사항
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//Seekbar의 움직임이 멈춘다면 실행될 사항
}
public void update() {
if (seekbar.getProgress() == 1) {
seekbar.bringToFront();
view2.bringToFront();
view3.bringToFront();
} else if (seekbar.getProgress() == 2) {
seekbar.bringToFront();
view1.bringToFront();
view3.bringToFront();
} else if (seekbar.getProgress() == 3) {
seekbar.bringToFront();
view2.bringToFront();
view1.bringToFront();
} else {
view1.bringToFront();
view2.bringToFront();
view3.bringToFront();
}
// Log.d("updatenumber1",String.valueOf(seekbar_Torque_map.getProgress()==1));
}
public void progressNumber1() {
number1 = seekbar.getProgress();
// Log.d("number1",String.valueOf(number1));
}
});
}
}
시크바의 getProgress()를 이용해서 시크바 위치를 먼저 최상위로 지정해주고 다음 양쪽의 view들의 위치를 최상위로 바꿔줍니다 [ .bringToFront() ]
seekbar 다음 view를 최상위로 위치해준 이유는 프로그래스바와 시크바thumb가 동시에 움직이기 때문입니다.
다른 좋은 방법이 있는지 모르겠지만 간단한 방법으로 해결해봤습니다.
하지만 이것만으로 완벽히 시크바를 사용하기는 어렵습니다.
객체를 통해 데이터를 담아오고 불러오는 과정에서 progress의 위치로 시작될 경우 초기 저장 값은 view가 보이더군요.
그 과정은 Handler().postDelayed() 를 통하여 view를 클리어한 후 다시 set 해주는 방법으로 해결했습니다.
public void viewclear(){
//데이터 뷰에 적용하기
seekbar.setProgress(0);
}
다음과 같이 progress를 초기위치로 바꾸고
final ProgressDialog pd = ProgressDialog.show(MainScreen.this, "", "잠시 기다려주세요...");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
viewset();
pd.dismiss();
}
},1000);
핸들러를 통하여 1초의 딜레이후 뷰를 셋 해주었습니다.
public void viewset(){
//데이터 뷰에 적용하기
seekbar.setProgress(mMain_data.getAcceleration());
}
저는 객체를 통하여 데이터를 sqlite와 의 데이터 전송을 위해 만들었기 때문에 해당 과정은 간단한 방법들만 적었습니다.
더 좋은 방법과 view를 seekbar와 통일할 수 있는 방법을 알려주실 분 환영합니다.
댓글이나 이메일로 부탁드려요~
'프로그래밍 > 안드로이드,xml' 카테고리의 다른 글
Fragment 간 이동 및 데이터 전달 저장용 (0) | 2020.05.29 |
---|---|
Retropit2 저장용 (0) | 2020.05.29 |
RelativeLayout 와 LinearLayout 뷰면적 ,상대적위치 (0) | 2019.07.09 |
안드로이드 listview 와 SQLITE (0) | 2019.06.25 |
안드]로그인페이지와 회원가입페이지 (1) (0) | 2018.11.08 |