たまにはAndroidだってやるさ!okita です。
今回はGeneXusじゃなくてAndroidです(`ω´)グフフ
しかも皆大好きトーストについてです。
・・・・・パンのほうじゃないっすよw
Android でトーストっていうとこんなの↓が一般的なトーストです。
バージョンが違うとこんな感じで違ったり違わなかったり・・・・・
一応Android標準機能のトーストですが
カスタマイズができます!・・・しかし、自分でカスタマイズとかメンドイw
そこで「SuperToasts」というライブラリを使えば
一工夫されたトーストが表示されます!
ライブラリって最高ですねw
という訳で使い方が以下です。
まずはGITからライブラリとデモを取得
https://github.com/JohnPersano/SuperToasts
ライブラリは jar形式 では無く プロジェクト形式 になってます。
基本的にデモアプリを見れば使い方がわかりますが
私はあえて説明しますよ!あえてねw
■画像付きのトーストを表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// アクティビティを引数とする。(フラグメントの場合はgetActivity()とか・・・) final SuperToast superToast = new SuperToast(this); // アニメーションを設定 superToast.setAnimations(SuperToast.Animations.FADE); // トーストが表示されている長さを設定 superToast.setDuration(SuperToast.Duration.SHORT); // 背景色を設定 superToast.setBackground(SuperToast.Background.BLACK); // テキストのサイズを設定 superToast.setTextSize(SuperToast.TextSize.SMALL); // 画像を指定 superToast.setIcon(R.drawable.ic_launcher, SuperToast.IconPosition.LEFT); // トーストを表示 superToast.setText("スーパートースト 表示!!!"); superToast.show(); |
実行結果
ボタンイベント等に設定すれば画像付きトーストが表示されるはずです。
■トースト内にボタンがあるトースト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/** * ボタンのクリックイベント * */ public void onBtn2Click(View v){ // アクティビティを引数とする。(フラグメントの場合はgetActivity()とか・・・) final SuperActivityToast superActivityToast = new SuperActivityToast(this,SuperToast.Type.BUTTON); // ボタンのリスナーを設定 superActivityToast.setOnClickWrapper(onClickWrapper); // ボタンのテキストを設定 superActivityToast.setButtonText("ボタン"); superActivityToast.setText("ボタン付きトースト"); superActivityToast.show(); } /** * トースト内のボタンのクリックイベント * */ private OnClickWrapper onClickWrapper = new OnClickWrapper("onclickwrapper_one", new SuperToast.OnClickListener() { @Override public void onClick(View v, Parcelable token) { SuperToast superToast = new SuperToast(v.getContext()); superToast.setText("onClick!"); superToast.setDuration(SuperToast.Duration.VERY_SHORT); superToast.setBackground(SuperToast.Background.BLUE); superToast.setTextColor(Color.WHITE); superToast.show(); } }); |
実行結果
左:ボタン付トースト
右:ボタン付トーストのボタンを押した後
トースト内部にボタンがあるトーストの表示です。
■プログレスを表示するトースト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/** * ボタンのクリックイベント * */ public void onBtn3Click(View v){ // アクティビティを引数とする。(フラグメントの場合はgetActivity()とか・・・) final SuperActivityToast superActivityToast = new SuperActivityToast(this,SuperToast.Type.PROGRESS); superActivityToast.setText("プログレス!!!!!"); superActivityToast.setOnDismissWrapper(onDismissWrapper); superActivityToast.show(); } /** * トーストが消えた瞬間のイベント * */ private OnDismissWrapper onDismissWrapper = new OnDismissWrapper("ondismisswrapper_one", new SuperToast.OnDismissListener() { @Override public void onDismiss(View view) { SuperToast superToast = new SuperToast(view.getContext()); superToast.setText("onDismiss!"); superToast.setDuration(SuperToast.Duration.VERY_SHORT); superToast.setBackground(SuperToast.Background.RED); superToast.setTextColor(Color.WHITE); superToast.show(); } }); |
実行結果
左:プログレストースト
右:プログレスが終わった後
プログレス付きのトーストです。
■プログレスバーを表示するトースト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/** * ボタンのクリックイベント * */ public void onBtn4Click(View v) { // アクティビティを引数とする。(フラグメントの場合はgetActivity()とか・・・) final SuperActivityToast superActivityToast = new SuperActivityToast(this, SuperToast.Type.PROGRESS_HORIZONTAL); superActivityToast.setIndeterminate(true); mDummyOperation = new DummyOperation(superActivityToast); mDummyOperation.execute(); superActivityToast.setText("プログレス バー!!!!!"); superActivityToast.show(); } /** * AsyncTask で非同期処理 * */ private class DummyOperation extends AsyncTask<Void, Integer, Void> { SuperActivityToast mSuperActivityToast; public DummyOperation(SuperActivityToast superActivityToast) { this.mSuperActivityToast = superActivityToast; } @Override protected Void doInBackground(Void... voids) { // 非同期処理 for (int i = 0; i < 11; i++) { try { Thread.sleep(250); // プログレスを進める onProgressUpdate(i * 10); } catch (Exception e) { e.printStackTrace(); } } return null; } @Override protected void onPostExecute(Void voids) { // 終了したタイミングでトーストを消す mSuperActivityToast.dismiss(); } @Override protected void onProgressUpdate(Integer... progress) { super.onProgressUpdate(progress); // プログレスを進める mSuperActivityToast.setProgress(progress[0]); } @Override protected void onCancelled() { super.onCancelled(); // キャンセルの場合 SuperActivityToast.cancelAllSuperActivityToasts(); } } |
実行結果
プログレスバー付きのトーストです。
ダウンロード等につかえるかも・・・?
■ある一定の場所に出すトースト
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * ボタンのクリックイベント * */ public void onBtn5Click(View v) { // アクティビティを引数とする。(フラグメントの場合はgetActivity()とか・・・) final SuperCardToast superCardToast = new SuperCardToast(this,SuperToast.Type.STANDARD); superCardToast.setAnimations(SuperToast.Animations.POPUP); superCardToast.setDuration(SuperToast.Duration.SHORT); superCardToast.setTextSize(SuperToast.TextSize.SMALL); superCardToast.setText("スーパーカード 表示!!!"); superCardToast.show(); } |
1 2 3 4 5 |
<LinearLayout android:id="@+id/card_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> |
※「SuperCardToast」は上記の LinearLayout が画面上に存在しないとトーストがでません!
実行結果
ということで
直ぐに消えちゃうけど何かイベントは組み込みたい!
なんて思った時に使えれば便利かなと思います。
Android ユーザーでクローム使ってる人ならわかると思うけど
タブを消した時にこんな↓トーストが出ます。
毎回は使わないけどあると使うときがたまにあるw
そんな機能程度だと思いますが
そんな機能も大事だと思う今日この頃です。
ちなみに「Apache2 license」になっているようです。
以上です。