【Android Studio】SeekBarの使い方 – Java編

Sara

この記事では、音量調節やサイズ調節に使うことができる SeekBar の使い方を紹介します。

実装するのは

  1. TextView に SeekBar の初期値を表示
  2. SeekBar を変更したら TextView を更新
  3. Button を押したら初期値に戻す

の3つです。

【完成イメージ】

開発環境

Android StudioChipmunk 2021.2.1
Android EmulatorNexus 4 (API 32)
compileSdk / targetSdk32
minSdk16

プロジェクトについて

SeekbarSample という名前のプロジェクトを作成して

  • MainActivity.java
  • activity_main.xml

がある状態で実装していきます。

Snackbarの使い方

1. レイアウトの用意

activity_main.xml を開いて、以下のようにレイアウトを用意します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="100"
android:textSize="36sp"/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:layout_marginVertical="40dp"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="リセット"/>
</LinearLayout>
22行目

max 属性で SeekBar の最大値を指定します。

最小値は0になるので、ここでは0~100の範囲で数値を取得することができます。

23行目

progress 属性で初期値を設定できます。

2. SeekBarの値を取得する

まずは TextView に SeekBar の初期値を表示します。

MainActivity.java を開いて、8~13行目を追加します。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
SeekBar seekbar = findViewById(R.id.seekbar);
Button button = findViewById(R.id.button);
// 初期値を表示
textView.setText(seekbar.getProgress() + "");
}
}

3. SeekBarの値を変更する

「リセット」ボタンを押したら、初期値50の位置に戻るようにします。

11~16行目を追加します。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* 省略 */
// 「リセット」を押したら50にする
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
seekbar.setProgress(50);
}
});
}
}

4. SeekBarイベントリスナー

SeekBar の動きに合わせて TextView の値を更新します。

SeekBar に加えた変更は OnSeekBarChangeListener を使って取得することができます。

用意されているメソッドは

  • onProgressChanged(変更中)
  • onStartTrackingTouch(変更開始時)
  • onStopTrackingTouch(変更終了時)

の3つです。

11~24行目のコードを書きます。

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* 省略 */
// SeekBarイベント
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
textView.setText(i + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}
13行目
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

1つ目の引数 seekBar は イベントが発生している SeekBar です。

2つ目の引数 i が SeekBar の現在の値です。

3つ目の引数 b は「ユーザーが加えた変更か」を Boolean 型で取得できます。

5. 完成

以上で完成です!

完成版のコード

Q
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="100"
android:textSize="36sp"/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:layout_marginVertical="40dp"/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="リセット"/>
</LinearLayout>
Q
MainActivity.java
package com.example.seekbarsample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
SeekBar seekbar = findViewById(R.id.seekbar);
Button button = findViewById(R.id.button);
// 初期値を表示
textView.setText(seekbar.getProgress() + "");
// 「リセット」を押したら50にする
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
seekbar.setProgress(50);
}
});
// SeekBarイベント
seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
textView.setText(i + "");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
}

COMMENT

Subscribe
必ずお読みください!

投稿いただいたコメントは管理者の承認後に表示されます。

コードやエラーに関するご質問の場合は、以下の3点

  1. 開発環境(OS / ブラウザ / MAMP 6.6 / Android Studio Chipmunk など)
  2. エラーメッセージ
  3. お試しになったこと

できるだけ具体的に必ず書いてください。

Notify of


0 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

0
この記事にコメントするx
記事URLをコピーしました