Translate

BTemplates.com

Powered by Blogger.

2017年11月4日土曜日

2017-11-04 到達点メモ


*kotlinで書いてます

VoiceTimerの新たな機能として音量調整を機能を作っていたのだが
意外に面倒。

よくあるシークバーによる音量調整機能をつけようと思ったのだが
調べたところ、一先ず公式ドキュメントにSeekBarPreferenceというのがあるのを見つけた。

途中で詰まったのでほおっておいたのだが、調べなおしたところ
普通にxml上で<android.support.v7.preference.SeekBarPreference/>
という風に使えば使えそうである。
明日辺り試す。

参考サイト:Styling android.support.v7.preference.SeekBarPreference

で、今回自分が試したのは
MaterialSeekBarPreferenceというライブラリである。

サンプルだけだとどうにも理解できなかったため
大分悩んだのですが、こう書きました

xmlファイル
<?xml version="1.0" encoding="UTF-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.pavelsikun.seekbarpreference.SeekBarPreference
        android:key="@string/key_name"
        android:title="@string/pref_title"
        app:msbp_interval="1"
        app:msbp_maxValue="100"
        app:msbp_minValue="0"
        app:msbp_measurementUnit="%"
        app:msbp_dialogEnabled="false"
        />

</PreferenceScreen>

kt.ファイル

class SettingPreferences : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener {
//中略
        val volumeAdjustment = findPreference(seekBarKey)
        volumeAdjustment.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { preference, any ->
            val volume_persent = any as Int
            //処理内容
          false
        }
        volumeAdjustment.setDefaultValue(default_value)
//以下略

簡単に解説するとSeekBarPreferenceに型変換をする必要はなく
findPreferenceでとってくることができます
値が変化した時に値を保存するなり好きに処理すればいいと思います
デフォルト値は、setDefaultValueで代入できます。

ひとまず7.0で動作することが確認できたので
今日はここまで。

0 コメント:

コメントを投稿