2012年5月9日水曜日

[Android] ♫SARA

今までにLabVIEWTcl/Tkなんかでは、いくつかソースコードを公開してたんですが、Androidではアプリやスキンを公開するばかりで、コードを公開してませんでした。

私がいくらコピペプログラマだとはいえ、これではコミュニティに対してあまりに恩知らずですよねw

というわけで、『Glaeja』で使ってるファイル選択ダイアログクラスのコードを公開します。
Androidは標準のファイル選択ダイアログAPIを持っていませんので、任意フォルダ内のファイルをユーザーに選択させなけりゃならないハメに落ちいった方はどうぞご利用ください。

プロジェクトのダウンロードと解説は続きに…


デモアプリのEclipseプロジェクトのダウンロードはココから。

ダイアログの使用に必要なファイルは、
  • "src/FileOpenDialog.java"がファイル選択ダイアログのクラスファイル
  •  "res/drawable/icon_file.png""res/drawable/icon_folder.png"が上記クラスで使用しているファイルとフォルダーのアイコン画像
  •  "res/layout/fod_list_row.xml"がファイル選択ダイアログ内のリストアイテム用XML
です。

使い方は、、、ソース読めwww

ではなんなので簡単に解説します。

下がデモアプリ本体である"src/MainActivity.java"です。

package com.gmail.kanitawa.demofod;

import java.io.File;

import com.gmail.kanitawa.demofod.FileOpenDialog.OnOpenFileSelectedListner;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Button btn = (Button) findViewById(R.id.button1);
  btn.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
    showDialog(1);
   }
  });
 }

 @Override
 protected Dialog onCreateDialog (int id) {
  return createFODialog();
 }

 private Dialog createFODialog () {
  FileOpenDialog fod = new FileOpenDialog(this)
        .addExtensionFilter("ttf") .addExtensionFilter("TTF")
        .addExtensionFilter("otf") .addExtensionFilter("OTF");

  fod.setOnOpenFileSelectedListner(new OnOpenFileSelectedListner() {
   public void onOpenFileSelected(File file) {
    TextView tv = (TextView) findViewById(R.id.textview1);
    tv.setText(file.getAbsolutePath());
   }
   public void onOpenFileCanceled() { }
  });

  return fod.createDialog(Environment.getExternalStorageDirectory().getAbsolutePath());
 }
}

37行目がファイル選択ファイアログクラスのコンストラクタになります。
適当なContextを渡しておいてください(ここではActivity自身を渡しています)。

38・39行目では、このダイアログで表示したいファイルの拡張子を設定しています。
ここではフォントファイルを表示させるために"ttf"とか"otf"を与えています。
拡張子の大文字小文字を識別するので、必要なら両方与えてください。

41~47行目では、ファイルが選択された場合のイベントリスナを設定しています。
ここでは無名クラスを使って内部で処理させています。もちろんimplementsしてやっても構いません。

49行目で、インスタンス化し設定を終えたファイル選択ダイアログクラスの表示をおこなっています。
ここで、開始時に表示させたいフォルダーの絶対パスを与えてやってください。

ダイアログをカスタマイズする場合は、"src/FileOpenDialog.java"を読んで頑張ってくださいw


最後になりましたが、このクラス(と付随する画像・XMLファイル)は全て無償のフリーソフトウェアとして公開します。
これらの使用・改変・再配布・自社製品への組込みにあたり、制限や報告および表示の義務はありません。
また、これらを組み込んで作成した物に対するライセンス制限もありません。

ただし、動作保証およびサポート・メンテナンスの義務は負いませんので、使用は自己責任で行ってください。
機能の追加、およびデバッグも使用者の自己責任で行ってください。その際の報告義務はありません。
また、これらの利用、および利用できなかった事により発生したいかなる損害も当方は一切関知しません。

1 件のコメント:

  1. ありがとうございます!使わせて頂きました!
    APIROM専プログラマにはfiledialogをスクラッチで書くのは無理だと泣いていたところでした><

    返信削除