취소

커뮤니티

가이드

서포트

전체

 

퍼갈 때에는 반드시 저작자의 허락과 저작자의 이름(아이디)를 기록하어야 합니다.

저작자는 Snails(tjdtnsu)입니다.

덧글은 강의 제작자에게 큰 힘이 됩니다

참고 : 이 강좌는 초보자를 위한 Eclipse를 사용하였습니다.

올리는 곳 : 제 네이버 블로그, 디벨로이드 카페

업로드 시간 : 매달 2,4주 오후 11시

난이도 : ★★★★★☆

이번 시간에는 시크바를 하겠습니다

시크바라고 하면, 뭐 볼륨, 밝기 등을 조절 할 때 나오는 바로써

거의 다 봤다고 칩시다

 

 

액티비티에서,

그 많이 보던 것(시드바라고도 하고 프로그래스바라고도 한다)을 드래그 앤 드롭으로 끌어옵시다

Value.. 뭐시기 적혀 있는 건 TextView이므로 참고하세요

 

자, 그러면 코드를 보시겠습니다

 xml - activity_main.xml

 

<RelativeLayout xmlns:androhttp://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"    xmlns:tools="http://schemas.android.com/tools"    android:layout_    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >

    <TextView        android:        android:layout_        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="21dp"        android:text="Value : 0" />

    <SeekBar        android:        android:layout_        android:layout_height="wrap_content"        android:layout_alignParentRight="true"        android:max="100"        android:layout_below="@+id/textView1" />

    <TextView        android:        android:layout_        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/seekBar1"        android:layout_below="@+id/seekBar1"        android:text="" />

</RelativeLayout> 

 java - MainActivity.java

 

package com.meap;

import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.widget.SeekBar;import android.widget.TextView;

public class MainActivity extends Activity {  SeekBar s;  TextView v;  TextView e; int progress;  @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  s = (SeekBar) findViewById(R.id.seekBar1);  v = (TextView) findViewById(R.id.textView1);  e = (TextView) findViewById(R.id.textView2);  s.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {   @Override   public void onStartTrackingTouch(SeekBar seekBar1) {    e.setText("시드바를 만지고 있습니다");   }   @Override   public void onProgressChanged(SeekBar seekBar1, int progress, boolean arg2) {    s.setProgress(progress);    v.setText("Value : "+ progress);    if((int)progress==32) e.setText("음?");    else e.setText("시드바를 만지고 있습니다");   }   @Override   public void onStopTrackingTouch(SeekBar seekBar1) {    e.setText("");   }  });   }

 @Override public boolean onCreateOptionsMenu(Menu menu) {  // Inflate the menu; this adds items to the action bar if it is present.  getMenuInflater().inflate(R.menu.main, menu);  return true; }

 

 

음음음 코드는 복잡하지만 해석은 간단합니다

 

 

일단 xml 코드에서 볼 건

android:max="100"인데, 이것은 시드바의 최댓값을 지정합니다.

귀찮으니깐 100으로 했습니다.

 

 

 

SeekBar s; TextView v; TextView e;int progress;변수 정의 부분입니다. 여기서 주의할 점 나갑니다.

제가 많이 겪었던 부분입니다.

값을 미리 지정해주면 강제종료됩니다. 예를 들면

TextView v = (TextView) findViewById(R.id.textView1);

이러면 강제종료됩니다. 그러므로 변수값은 꼭 따로 안에 집어넣으세요

 

 

 

s.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {은 클래스를 생성하는 부분입니다. 여기서 시드바에 대한 설정을 합니다.

 

 

s.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {

  //여기에 시드바가 터치되고 있을 때의 코드를 지정합니다

}

 

public void onStartTrackingTouch(SeekBar seekBar) {

 // 여기에 시드바가 터치되기 시작할 때의 코드를 지정합니다

}

 

public void onStopTrackingTouch(SeekBar seekBar) {

 // 여기에 시드바가 터치에서 떼 졌을 때의 코드를 지정합니다

}

}); 

 

위는 코드는 이 클래스가 사용될 때의 코드입니다.

저는 onProgressChanged만 썼습니다. 그 만큼 이게 제일 많이 사용됩니다.

 

 

 

s.setProgress(progress);v.setText("Value : "+ progress);if((int)progress==32) e.setText("음?");여기서 프로그래스 값을 받아서, TextView에 출력합니다.

그리고 오늘은 특별히 거의 이스터 에그로

progress 값이 32일 때 음? 이라는 걸 추가로 출력하도록 합니다.

 

 

 

 

그러면 설명은 끝났으면 출력 결과를 보시죠

 

 

 

그렇습니다. 다음 시간에는 시간 출력을 하겠습니다.