Picassoでエラーの詳細を取得する
Picassoでエラー発生時のコールバックを取得するとき
Picasso.with(context).load(URL).into(ImageView, new Callback() { @Override public void onSuccess() { } @Override public void onError() { } });
こんな感じに書くことができるけど、これだとエラーの詳細を取得することができない。
以下のようにbuilderにlistenerを設定することでStackTraceなりResponseCodeなり、エラーの詳細を取得することができる。
Picasso.Builder builder = new Picasso.Builder(context); builder.listener(new Picasso.Listener() { @Override public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) { } }); builder.build().load(URL).into(ImageView);
Android Studioでドキュメントが自動的にポップアップしないようにする。
マウスカーソルが当たっているコードのドキュメントが勝手にポップアップするやつ、イライラするから消したい。
Preferences
Editor>General>Code Complete内のAutopopup documentation in (ms)
のチェックを外す
平穏。
ユーザ切り替えインテントを取得する
Android 5.0(lollipop)からマルチユーザに対応しました。(タブレットは4.2から)
ユーザ切り替えが発生した際のインテントの取得したい場合、以下のように記述します。
class UserSwitchReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // ユーザ切り替え時の処理 } } /** * ユーザ切り替え時のレシーバ登録 */ void registerReceiver() { IntentFilter intentFilter = new IntentFilter(); // ユーザがバックグラウンドになった際のインテント登録 intentFilter.addAction(Intent.ACTION_USER_BACKGROUND); // ユーザがフォアグラウンドになった際のインテント登録 intentFilter.addAction(Intent.ACTION_USER_FOREGROUND); registerReceiver(new UserSwitchReceiver(), intentFilter); }
ユーザが切り替わった際にActivityを止めたい時なんかは、上記UserSwitchReceiver
のonReceive
でfinish()
すればいいはず。
ViewのVisibleが変化した際に起動するイベントリスナを作る。
1.イベントリスナをセットしたいViewを継承した独自Viewクラスを作成する。
public class MyTextView extends TextView { public MyTextView(Context context) { super(context, null); } }
2.イベントリスナのインタフェース・メンバ変数・セットメソッドを定義する。
public class MyTextView extends TextView { public MyTextView(Context context) { super(context, null); } private OnVisibilityChangeListener mOnVisibilityChangeListener; public interface OnVisibilityChangeListener { public void onVisibilityChange(int visiblity); } public void setOnVisibilityChangeListener(OnVisibilityChangeListener listener) { mOnVisibilityChangeListener = listener; } }
3.setVisiblityメソッドをオーバーライドしてVisibleの変化に呼応してイベントが発生するように実装する。
public class MyTextView extends TextView { public MyTextView(Context context) { super(context, null); } private OnVisibilityChangeListener mOnVisibilityChangeListener; public interface OnVisibilityChangeListener { public void onVisibilityChange(int visiblity); } public void setOnVisibilityChangeListener(OnVisibilityChangeListener listener) { mOnVisibilityChangeListener = listener; } @Override public void setVisibility(int visibility) { super.setVisibility(visibility); if (mOnVisibilityChangeListener != null) { mOnVisibilityChangeListener.onVisibilityChange(visibility); } } }
これで対象のViewの表示・非表示が切り替わるたびに発生させたい処理を定義することができます。
ちなみに以下のように実装します。
mMyTextView.setOnVisibilityChangeListener(new MyTextView.OnVisibilityChangeListener() { @Override public void onVisibilityChange(int visiblity) { if (View.VISIBLE == visiblity) { } else if (View.INVISIBLE == visiblity) { } else if (View.GONE == visiblity) { } } };
Android StudioでBreakpointの一覧表示
Android Studioで、設置したBreakpointの一覧を確認したい場合
ctrl+shift+F8
で以下のような子画面が表示されるので、そこで一覧表示・削除・設置等を行うことができる。
罫線のついたtextareaをcssで実現する。
ノートみたいな罫線をtextarea内に描画したい場合、以下のようなcssを記述することで実現できます。
textarea { font-size: 15pt; line-height: 31px; padding: 31px; /* テキストエリアに陰をつける */ box-shadow: 0.2em 0.2em 0.5em black; /* 罫線描画(各ブラウザ対応)*/ background-image: -webkit-linear-gradient(left, white 10px, transparent 10px), -webkit-linear-gradient(right, white 10px, transparent 10px), -webkit-linear-gradient(white 30px, #ccc 30px, #ccc 31px, white 31px); background-image: -moz-linear-gradient(left, white 10px, transparent 10px), -moz-linear-gradient(right, white 10px, transparent 10px), -moz-linear-gradient(white 30px, #ccc 30px, #ccc 31px, white 31px); background-image: -ms-linear-gradient(left, white 10px, transparent 10px), -ms-linear-gradient(right, white 10px, transparent 10px), -ms-linear-gradient(white 30px, #ccc 30px, #ccc 31px, white 31px); background-image: -o-linear-gradient(left, white 10px, transparent 10px), -o-linear-gradient(right, white 10px, transparent 10px), -o-linear-gradient(white 30px, #ccc 30px, #ccc 31px, white 31px); background-image: linear-gradient(left, white 10px, transparent 10px), linear-gradient(right, white 10px, transparent 10px), linear-gradient(white 30px, #ccc 30px, #ccc 31px, white 31px); background-size: 100% 100%, 100% 100%, 100% 31px; /* 淡いグレーで枠線を囲む */ border: 1px solid #ccc; }
こんな感じになります。