LINEの友だちの名前を変える

LINEで友達になったけど、あだ名とかで誰か分からなくなってました..
気づいてなかったですが、ふつうに名前変えられます
Androidアプリ、バージョン4.6.0で試しました

LINEを立ち上げて友だち一覧
名前を変えたい友だちをタップ
line-friend

鉛筆マークをタップ
line-friend2

名前が変えられる!
line-friend3

最初に登録したときによく分からない名前のひとは変えておくといいですね
(もう手遅れ…)

GoFのデザインパターンのSingletonをおさらいしてみた

GoFのデザインパターンのSingletonをおさらいしてみました

Singletonはクラスのインスタンスが1つしか存在させたくない時や、使いまわせるインスタンスは使いまわしてnewのコストを減らすのに使ったりします

phpで書くとこんな感じ


class Singleton
{
    private $_id;

    protected function __construct()
    {
        $this->_id = md5(date('r') . mt_rand());
    }   

    public static function getInstance()
    {   
        static $instance = null;
        if ($instance === null) {
            $instance = new static;
        }   
        return $instance;
    }   

    private function __clone()
    {   
    }   

    private function __wakeup()
    {   
    }   

    public function getId() {
        return $this->_id;
    }   
}

class SingletonChild extends Singleton
{
}

$one = Singleton::getInstance();
echo $one->getId(), PHP_EOL;
$one = Singleton::getInstance();
echo $one->getId(), PHP_EOL;

$two = SingletonChild::getInstance();
echo $two->getId(), PHP_EOL;

コンストラクタをprotectedにすることでnewできなくして
__cloneをoverrideしてprivateに
__wakeupをoverrideしてprivateにすることで
インスタンスのコピーも作れなくなります
1度つくられたインスタンスを保持して使いまわします
継承クラスでは別のインスタンスになります
参考) http://ja.phptherightway.com/pages/Design-Patterns.html

auのキャリアメール(@ezweb.ne.jp)を転送する

auのガラケーとsimフリーのスマフォ2台持ちですが
キャリアメールに気づかないことが多々ありました..

そこでauのキャリアメールを、GmailやYahooメールに転送しようと思ったら簡単でした
http://csqa.kddi.com/posts/view/qid/k1112050108

2件まで転送先が設定できます
Yahoo!コミュニケーションメール(@yahoo.ne.jp)には届かないのはなぜだろう..(あきらめました)
追記)迷惑メールとしてブロック、また、転送でなりすましメールと判定されてるようでした

調べてたら勝手に携帯に設定して浮気調査とかに使うそうで..こわいこわい

Android公式サイトのトレーニング「 Adding the Action Bar」をAndroid Studioしてみた

Android公式サイトのトレーニング「Building Your First App」をAndroid Studioしてみた
につづき「Adding the Action Bar」をAndroid Studioしてみました
http://developer.android.com/intl/ja/training/appbar/index.html

「Building Your First App」ではそのままアプリができましたが、今回はそのままできるようにはなってないようです
Android Studio 0.8.9 でやったときの差とコメントを書いていきます
※ 後半、めんどうだったので省略してます

Adding the Action Bar
Action Barの説明

Setting Up the Action Bar
-> Support Android 3.0 and Above Only
<uses-sdk .. はbuild.gradleにある

-> Support Android 2.1 and Above
対応予定がないので、今回は飛ばした

Adding Action Buttons
Action Buttonsの説明

-> Specify the Actions in XML
プロジェクト作成時にBlank Activityを選ぶと、デフォルトではmenu/my.xmlがAction Barの設定になる
英語でroomは、使える場所、余地

@drawable/ic_action_search がないため追加する
resフォルダを右クリック、New、Image Asset
(Android Studioをインストールしたディレクトリ) /sdk/platforms/android-19/data/res/drawable-ldpi/ic_search_category_default.png
を選択、Resource Nameをつけて追加

-> Add the Actions to the Action Bar
Android Studioではデフォルトの
[java]
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
[/java]
で動作する

-> Respond to Action Buttons
Action Buttonをタップすると、onOptionsItemSelected()が呼ばれ、IDで区別して動作を作成する

-> Add Up Button for Low-level Activities
API level 16以上だと戻るボタンの実装は簡単でManifest.xmlに親のアクティビティを指定するだけでいい

Styling the Actin Bar
Androids’s style and themeを使えば、action barのスタイルがかえられる

-> Use an Android Theme
android:themeは<application>や<activity>ごとにつけられる

-> Customize the Background
For Android 2.1 and higher
は飛ばしました

res/values/themes.xmlでなくres/values/styles.xmlを参照
drawableで色をしているがファイルがない(自分でつくる?)

CustomizeActionBarThemeがPreviewウィンドウで反映されない?
と思いましたが、Emulatorで動かすと効いてました
Preview画面では上部のThemeをCustomizeActionBarThemeに変更すると反映されます

-> Customize the Text Color
android:titleTextStyleでAction Barのスタイル指定
android:actionBarTabTextStyleでActionBarTabのスタイル指定
android:actionMenuTextColorでAction Barのテキストカラー

MyActionBarTitleText、actionBarTabTextStyleでActionBarTab内の
TextColorを設定するとそちらが有効になる(actionMenuTextColorよりも)

-> Customize the Tab Indicator
drawableのものが色々足りない
ページ上部のYou should also readのところの
Android Action Bar Style Generator
でダウンロードして持ってこれる

名前つけずにダウンロードすると同じファイル名になる
unzipして、プロジェクトのresディレクトリに放り込む

Tab Indicatorを作るのが面倒だったので、省略..

Overlaying the Action Bar
hide()やshow()でAction Barを隠したり出したりできるが再描画が走るので効率がよくない
overlay modeで解決できる

-> Enable Overlay Mode
–> For Android 3.0 and higher only
android:windowActionBarOverlayをtrueに指定すればoverlay mode

–> For Android 2.1 and higher
飛ばしました

-> Specify Layout Top-Margin
overlay modeのとき、Action Barのしたに常にlayoutを出すならマージンを指定
android:paddingTop=”?android:attr/actionBarSize”