カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

設定画面の説明文を設定内容によって変更する

例としてEditTextPreferenceの設定がされていればSummaryに表示するようにします。

リスナーをimplementsする場合

public class Setting extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref);

        PreferenceScreen ps = getPreferenceScreen();
        EditTextPreference ep = (EditTextPreference)ps.findPreference("key");
        if(ep.getText() != null && !ep.getText().equals("")) ep.setSummary(ep.getText());
    }

    @Override
    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

        if(key.equals("key")) {
            PreferenceScreen ps = getPreferenceScreen();
            EditTextPreference ep = (EditTextPreference)ps.findPreference("key");
            if(ep.getText() != null && !ep.getText().equals("")) {
                ep.setSummary(ep.getText());
            } else {
                ep.setSummary("デフォルトのSummary");
            }
        }
    }

}

続きを読む…»

4,266 views

EditTextの使い方

EditText editText = (EditText)findViewById(R.id.editText);

//複数行の場合、最大行数を設定
editText.setMaxLines(1);

//EditTextが未入力のときに表示させるヒントテキストを設定
editText.setHint("入力例");

入力モードを設定する

//数値入力
editText.setInputType(InputType.TYPE_CLASS_NUMBER);

//URL入力
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_URI);

//パスワード入力
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);

//メールアドレス
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);

//複数行入力
editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);

他にも設定値が多数あります。
参考:http://developer.android.com/intl/ja/reference/android/text/InputType.html

XMLで設定する場合

<EditText android:inputType="number" />
<EditText android:inputType="textUri" />
<EditText android:inputType="textPassword" />
<EditText android:inputType="textEmailAddress" />
<EditText android:inputType="textMultiLine" />
5,941 views

データを保存する SharedPreferences

SharedPreferencesを使えば設定内容など、保存したいデータを簡単に保存できます。
設定画面を用意したい場合は設定を保存する [Preference]を参照してください。

今回は、アクティビティなしのデータ保存です。
データ用のクラスを作成し、保存・読み出しのメソッドを記述します。

データはキーと値をセットにし、shared_prefフォルダーにXML形式で保存されます。
ディレクトリについてはファイル入出力を参照してください。
続きを読む…»

2,532 views

画像(ImageView)の回転 Matrix

Matrixを使ってImageViewを回転させます。
※ImageViewのIDをarrow、サイズを75×75とします。

ImageView imageView;
imageView = (ImageView)findViewById(R.id.arrow);

Matrix mtrx = new Matrix();
imageView.setScaleType(ScaleType.MATRIX);

mtrx.postRotate(90.0f, imageView.getWidth()/2, imageView.getHeight()/2);

imageView.setImageMatrix(mtrx);
imageView.invalidate(); //再描画

上記のようにするといけると思うんですが、
リストビューを使うアプリでやると最初が表示されない。
続きを読む…»

18,794 views

SQLite データ更新

int android.database.sqlite.SQLiteDatabase.update
update(String table, ContentValues values, String whereClause, String[] whereArgs)
ContentValues cv = new ContentValues();
cv.put("key", "value");
db.update("table", cv, "_id = ?", new String[] { "id" });
1,968 views