SSブログ
-| 2011年08月 |2011年09月 ブログトップ

設定画面 [設定]

設定画面はPreferenceActivityを使うと楽。

まずresのlayout内に設定画面用のレイアウトを作成する。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="@string/setting_title">
        <EditTextPreference android:key="setting_web"
            android:title="@string/setting_web" android:summary="@string/setting_web_summary"
            android:dialogTitle="@string/setting_web_dialogtitle" />
        <EditTextPreference android:key="setting_blog"
            android:title="@string/setting_blog" android:summary="@string/setting_blog_summary"
            android:dialogTitle="@string/setting_blog_dialogtitle" />
    </PreferenceCategory>
</PreferenceScreen>




EditTextPreferenceしか載せてないが、他にもある。


http://developer.android.com/reference/android/preference/PreferenceActivity.html


次にActivityの作成


 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.layout.preference);
    }
設定画面で編集すると、SharedPreferencesに自動的に保存される。これは便利。
PreferenceManager.getDefaultSharedPreferences(context);
 



 


ファイル操作 [ファイル操作]

ファイル操作は多々あるが、Contextを利用した場合。フォルダが作れないのが最大の欠点だと思う。

//Write ここではBitmapを使っている。

        byte[] bytedata = bmp2data(bitmap, Bitmap.CompressFormat.JPEG, 80);
        OutputStream os = null;
        try {
            os = con.openFileOutput(fileName, Context.MODE_PRIVATE);
            os.write(bytedata, 0, bytedata.length);
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (os != null)
                    os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
 
//Read Bitmapを読み込んでいる
InputStream is;
is = con.openFileInput(fileName);
bitmap = BitmapFactory.decodeStream(is);
 
//Delete
con.deleteFile(fileName);


 





リソースの最適化 [layout]

Android SDKの中にlayoutoptなるレイアウトの最適化を評価するツールがある。

layoutopt.bat “レイアウトXMLのディレクトリ”

で実行が可能。

C:\android-sdk-windows\tools>layoutopt.bat D:\work\Android\res

上のような感じでコマンドプロンプトで実行する。

D:\work\Android\res\values\styles.xml
        9:9 This item layout or its style parent is useless

こんな感じで結果が返ってくるので、それにそって修正する。






タグ:Layout 最適化

文字を入力するダイアログを作成する。 [Dialog]

        mEditText = new EditText(getApplicationContext());

        new AlertDialog.Builder(this).setTitle("Question")
                .setView(mEditText)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        mIP = mEditText.getText().toString();
                        }
                }).show();




Every Little Thing CD+DVD【アイガアル】11/8/24発売


Every Little Thing CD+DVD【アイガアル】11/8/24発売

  • ショップ: アットマークジュエリーMusic

タグ:Dialog

画面を傾けた時にViewFlipperのエラーを無くす [ViewFlipper]

 

public class CustomeViewFlipper extends ViewFlipper {

    public CustomeViewFlipper(Context context) {
        super(context);
    }

    public CustomeViewFlipper(Context context, AttributeSet set) {
        super(context, set);
    }

    @Override
    protected void onDetachedFromWindow() {
        try{
        super.onDetachedFromWindow();
        }catch(IllegalArgumentException ie){
            //ignore;
        }
    }
}


onDetachedFromWindowをオーバーライドさせて封印するだけ。これはバグらしい。




タグ:ViewFlipper

アプリを終了させる。 [Activity]

Activityの終了はfinishを呼べば良いのだけど、これだとそのActivityしか終了しない。

アプリを終了させるには

 moveTaskToBack(true);




これを書いたら全て終わる。さらにプロセスを終了したい場合は



android.os.Process.killProcess(android.os.Process.myPid());




推奨できないけど、System.exitも使える。




タグ:終了

メニューを作成する。 [メニュー]

image

resの下にmenuフォルダを作り、適当なxmlを作成する。ここではabout_menu.xmlとした。

中身はこんな感じ

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="@string/finish" android:icon="@android:drawable/ic_menu_close_clear_cancel"
        android:id="@+id/menu_finish"></item>
</menu>



でActivityに書くには以下の通り。


    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.about_menu, menu);
        return true;
    }
 
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_finish:
                moveTaskToBack(true);
                android.os.Process.killProcess(android.os.Process.myPid());
                break;
            }
            return super.onOptionsItemSelected(item);
        }
 




タグ:メニュー

-|2011年08月 |2011年09月 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。