2011年12月31日土曜日

Android:光沢のあるボタンをXMLで作る

もう少しカッコいいボタンが欲しくて、光沢感のあるものを作ってみました。
<layer-list>タグを使って光沢用のレイアウトを被せる手法を使いました。






<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- フォーカス時 -->
    <item android:state_focused="true"><layer-list>
        <item>
            <shape android:shape="rectangle" >
                <corners
                    android:topLeftRadius="5dip"
                    android:topRightRadius="5dip"
                    android:bottomLeftRadius="5dip"
                    android:bottomRightRadius="5dip"
                    />
                <gradient
                    android:startColor="@color/btn_glass_black_1"
                    android:endColor="@color/btn_glass_black_2"
                    android:angle="90"
                    />
                <stroke
                    android:width="2dip"
                    android:color="@color/btn_glass_black_1" />
            </shape>
        </item>
        <item
            android:top="5dip"
            android:bottom="14dip"
            android:left="10dip"
            android:right="10dip">
            <shape android:shape="rectangle">
                <corners
                    android:topLeftRadius="3dip"
                    android:topRightRadius="3dip"
                    android:bottomLeftRadius="3dip"
                    android:bottomRightRadius="3dip"
                    />
                <gradient
                    android:startColor="@color/btn_glass_black_2"
                    android:centerColor="@color/btn_brightness"
                    android:endColor="@color/btn_brightness"

                    android:angle="90"
                    />

            </shape>
        </item>
    </layer-list></item>

    <!-- 押下時 -->
    <item android:state_pressed="true">
        <shape android:shape="rectangle" >
            <corners
                android:topLeftRadius="5dip"
                android:topRightRadius="5dip"
                android:bottomLeftRadius="5dip"
                android:bottomRightRadius="5dip"
                />
            <gradient
                android:startColor="@color/btn_glass_black_2"
                android:endColor="@color/btn_glass_black_1"
                android:angle="90"
                />
            <stroke
                android:width="2dip"
                android:color="@color/btn_glass_black_1" />
        </shape>
    </item>


    <!-- 通常時 -->
    <item><layer-list>
        <item>
            <shape android:shape="rectangle" >
                <corners
                    android:topLeftRadius="5dip"
                    android:topRightRadius="5dip"
                    android:bottomLeftRadius="5dip"
                    android:bottomRightRadius="5dip"
                    />
                <gradient
                    android:startColor="@color/btn_glass_black_1"
                    android:endColor="@color/btn_glass_black_2"
                    android:angle="90"
                    />
            </shape>
        </item>
        <item
            android:top="5dip"
            android:bottom="14dip"
            android:left="10dip"
            android:right="10dip">
            <shape android:shape="rectangle">
                <corners
                    android:topLeftRadius="3dip"
                    android:topRightRadius="3dip"
                    android:bottomLeftRadius="3dip"
                    android:bottomRightRadius="3dip"
                    />
                <gradient
                    android:startColor="@color/btn_glass_black_2"
                    android:centerColor="@color/btn_brightness"
                    android:endColor="@color/btn_brightness"

                    android:angle="90"
                    />

            </shape>
        </item>
    </layer-list></item>

</selector>

どうも上に被せるitemは下に配置したitemのpaddingの影響を受けてしまうようで、自由に配置するのが難しいです。

なのでレイアウトを決める際にはボタンの高さを固定で30dipとして光沢位置を決めました。
paddingもXMLでは使わず、ボタンのプロパティとして設定しました。

大体イメージ通りのボタンになりましたが、layout_heightを30dipから変えられないという融通の利かないものになってしまったのが残念です。。。

2011年12月28日水曜日

Androidおすすめアプリ:PreHome

Androidおすすめアプリ<Home>:PreHome


PreHome

Androidはマルチタスク!と言われても切り替えとかすぐ出来ないからイマイチじゃ。。。と言うときに威力を発揮するのがこのアプリ。

ホームボタンに割り振ると起動中のアプリと最近起動したアプリの履歴がアイコン表示されます。


ホーム画面表示したい時はホームボタン2回押せばいいだけなので操作性も損なわず、タスク切り替えが劇的に早くなるのでかなりお勧めです。

andronaviの紹介ページは以下です。
『PreHome』~起動中のアプリが一目で分かって、タスク切り替えも超楽々!

2011年12月23日金曜日

android:ボタンのデザインを変える

AndroidのデフォルトButtonもいいんですが、角を丸くしたいなという時に画像を用意しなくてもデザインを変更出来る方法を紹介します。

使うのは<shape>を使ったxmlファイルです。


上がデザイン変更後のボタンです。










ボタンを押した時、フォーカスされた時、それ以外の状態のボタンを<shape>で作ります。

res/drawable/shape_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    android:shape="rectangle">

    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <gradient
               android:startColor="#666666"
               android:endColor="#333333"
               android:angle="90"
               />
            <corners
                android:bottomRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
               />
            <stroke
                android:width="4px"
                android:color="#9F9F9F"
               />
            <padding
                android:left="7dp"
               android:top="7dp"
               android:right="7dp"
               android:bottom="7dp"
               />
        </shape>
    </item>

    <item android:state_focused="true">
        <shape android:shape="rectangle">
            <gradient
               android:startColor="#666666"
               android:endColor="#333333"
               android:angle="90"
               />
            <corners
                android:bottomRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
               />
            <stroke
                android:width="2px"
                android:color="#FFFF00"
               />
            <padding
                android:left="7dp"
               android:top="7dp"
               android:right="7dp"
               android:bottom="7dp"
               />
        </shape>
    </item>
    <item>
        <shape >
            <gradient
               android:startColor="#666666"
               android:endColor="#333333"
               android:angle="90"
               />
            <corners
                android:bottomRightRadius="10dp"
                android:bottomLeftRadius="10dp"
                android:topLeftRadius="10dp"
                android:topRightRadius="10dp"
               />
            <stroke
                android:width="1px"
                android:color="#9F9F9F"
               />
            <padding
                android:left="7dp"
               android:top="7dp"
               android:right="7dp"
               android:bottom="7dp"
               />
        </shape>
    </item>

</selector>


<shape android:shape:>はどのような形にするか指定出来ます。
  • rectangle:四角
  • oval:楕円
  • line:線
  • ring:輪


<gradient>はグラデーションの指定です。
  • android:startColor:グラデーション開始色の指定
  • android:endColor:グラデーション終了色の指定
  • android:angle:グラデーションの傾き
     (0:左→右/45:左下→右上/90:下→上のようになります)


<corners>はractangleのみ指定出来て、角をどれぐらい丸くするかの指定です。
  • android:bottomRightRadius:右下
  • android:bottomLeftRadius:左下
  • android:topLeftRadius:左上
  • android:topRightRadius:右上

<stroke>は枠線の指定です。点線にする事も出来ます。
  • android:width:枠線の幅
  • android:color:枠線の色
  • android:dashWidth:点線の幅
  • android:dashGap:点線の間隔


あとは出来上がったxmlをボタンのバックグラウンドに指定すれば完成です。




2011年12月16日金曜日

android:エミュレータの起動設定

Android開発でエミュレータの起動時間はイライラの原因になります。
エミュレータの設定を変えると少し快適になります。


  • Snapshot
    前回起動していた最後の状態を記録させて、次回起動を高速化させます。
  • ハードウェア
    エミュレータの使用メモリを増やすとスクロールなどが滑らかになります。













また、エミュレータのウィンドウが微妙にデカくて下の方が選択出来ない。。。というような時は、スケーリングして画面に収まるようにするといいです。


Monitor dpiを高めにするとスケールの値が小さくなります。

自分の場合はちょっとエミュレータを小さくしたかったので0.77になるようにしてみました。

Android:エミュレータのproxy設定

社内ネットワークから外部サイトに繋げるプロキシ設定する必要があります。
「設定→データ使用(その他)→モバイルネットワーク→TelKila」の下にあるプロキシとポートを設定するとAndroid標準ブラウザから外部サイトが見られるようになります。



Android:「谷歌拼音輸入法は停止しました。」がやたら出る

なんだか分かりませんが、Android4.0のエミュレータを起動して設定変更していると、このダイアログが出まくって非常にうっとおしいです。

丁度「言語と入力」設定画面を開いていたところだったので、このダイアログを消した下に設定項目がありました。Japanese IMEを選んだら出なくなりました。


Android:エミュレータの言語を日本語にする

Androidのエミュレータを起動した直後は言語設定が英語になっています。
使いづらいので日本語に変更します。



  1. アプリ一覧からSettingを選びます


  2. 下の方にスクロールして、「Language & input」を選びます。


  3. 「Language」を選んで、一番下にある「日本語」を選んでください。

     

  4. するとメニュー項目が全部日本語になって分かりやすくなります。

Eclipse:@overrideがエラーになる

@overrideコメントがエラーになる場合、コンパイラー準拠レベルが1.6未満の可能性があります。
1.6にしてみて下さい。


Eclipse:文字コードの変更

Eclipseで開いたソースのコメントが文字化けしている場合、文字コードが一致していません。

Eclipseの「ウィンドウ→設定→一般→ワークスペース」と進んで
テキスト・ファイルのエンコードを変更して見てください。


2011年12月12日月曜日

Androidおすすめアプリ<バックライト>:Screebl Lite

Androidおすすめアプリ<バックライト>

Screebl Lite

傾きを検出している間はバックライトを付けっぱなしにしてくれるアプリです。
机に置いて水平になるとバックライトが消えます。
最近のスマホは電源ボタンが小さくて押しづらいのにイライラしますが、電源ボタン押す必要が無くなるのでストレスから解放されます。

Androidおすすめアプリ<写真転送>:Sweet Home

Androidおすすめアプリ<写真転送>


Sweet Home


自宅無線LANに接続したことを検出したら自動で写真をNASなどに転送してくれるアプリです。

先に紹介したGoogle+はPicasaに自動でアップロードしてくれますが、ローカルにもコピーしたい人にはとても便利なツールです。

使い方は以下が詳しいです。
『Sweet Home WiFi Picture Sync』~カメラで撮った画像を自動でPCに転送してくれるアプリ~

2011年12月11日日曜日

out.xmlが生成されてビルドエラーになる

XMLファイル編集中画面を表示したまま実行しようとすると、○○.out.xmlというファイルが自動で生成された上に空ファイルなのでビルドエラーになります。

解決するには

  1. ○○.out.xmlを削除する
  2. なんでもいいので.javaファイルを開いている状態にする
という状態にしてから実行するとうまくいきます。

Androidおすすめアプリ<漫画ビューア>:Perfect Viewer

Androidおすすめアプリ<漫画ビューア>


Perfect Viewer

漫画ビューアとして必要な機能は全て揃っているので、とても使いやすいです。





使い方は以下が詳しいです。
Perfect Viewerの使い方

Androidおすすめアプリ:gReader

Androidおすすめアプリ<RSSリーダー>


gReader

RSSリーダーはgoogleのReaderなどもあるのですが、何かの拍子で画面が更新されず既読記事が出てくるのが嫌でこちらを使っています。

無料版は下部に広告が出るのですが、ナビゲーションバーの表示をONにしておけば気になりません。


Androidおすすめアプリ:google+

Androidおすすめアプリ<SNS>:google+


google+

FaceBookのようなgoogleのサービスですが、このアプリの魅力は別の所にもあります。

それは「無線LANに接続したら自動でPicasaに写真をアップロード」出来る事。
Picasaはgoogle+に参加していれば容量無制限でアップロード出来るのでお手軽にスマホで撮った写真をバックアップ出来ます。


google+でPicasaの容量が無制限に

google+に参加するとPicasaの写真は2Kx2K、動画は15分以内なら無制限にアップロード出来るようになりました。
google+に参加と言っても、googleアカウントを紐付けるだけで特に何もしなくてOK。
google+も最初は招待制でしたが今は自由に登録出来るようになっているようです。

写真は2Kx2Kを超えている場合は自動で縮小されるので何も気にしなくて良さそうです。

動画も15分以上のビデオ撮影はそうそう無いので全部アップロードしてしまおうとしたところ、どうやら容量1Gという制限もあるようで、1Gまでしかアップロード出来ませんと怒られてしまいました。
フルHDで撮影したAVCHDの場合約10分で1Gとなるのでその点に注意が必要です。

ちょっとした制限はありますが、現状最強の写真/動画バックアップ先となったと言ってよいと思います。

Androidおすすめアプリ<メモリ解放>:FirstReBoot


Androidおすすめアプリ<メモリ解放>



FirstReBoot

長時間使っているとモッサリしてくるのがAndroid。。。
裏で動いているアプリを全部停止させて起動直後に近い状態に戻せます。

ウィジェットをタップするだけでいいのでお手軽です。

Androidおすすめアプリ<電池>:Battery Mix

Androidおすすめアプリ<電池>

Battery Mix


Battery Mixはバッテリーの消費をグラフで確認出来るツールです。

なんだか最近バッテリーの消費が早くなったような気がするなと思った時に確認すると、どのアプリがどのぐらいバッテリーを消費しているかが分かります。







以下のページに詳しい説明があります。

Androidおすすめアプリ<設定変更>:Auto Wifi Toggle

Androidおすすめアプリ<設定変更>

Auto Wifi Toggle


Auto Wifi Toggleは指定SSIDへ自動で接続してくれるツールです。

夕方5時~とか設定しておけば、家に帰ったら自動で無線LANに接続してくれてとても便利です。


また、SSIDとの接続が切れたら自動でWifi設定OFFにも出来るので電池にも優しいです。



使い方は以下が参考になります。

2011年12月10日土曜日

Androidおすすめアプリ<ファイラー>:ESファイルエクスプローラー

Androidおすすめアプリ<ファイラー>

ESファイルエクスプローラー

SDカードの中だけでなく、接続している無線LAN内のNASなどにもアクセス出来るので、家でファイルのやり取りする時にPCを起動しなくて良くなります。

NAS内の動画をストリーミング再生出来るのがポイントです。




ESファイルエクスプローラーの使い方は以下が参考になります。
スマホからFTPに接続可能!高機能ファイルマネージャ「ES ファイルエクスプローラー」


「ESファイルエクスプローラ」と「MoboPlayer」でLAN上の動画ファイルを直接再生

Androidおすすめアプリ<ブラウザ>:Angel Browser

Androidおすすめアプリ<ブラウザ>

Angel Browser


自分好みに細かくカスタマイズ出来るブラウザです。

「基本設定」で携帯ブラウザ/スマホブラウザ/PCブラウザの中から偽装情報を選べるので、価格.comはPCブラウザ表示で見たいなという時に便利です。

「詳細設定」でジェスチャーも設定出来るので、Dolphin Browser HDからの乗り換えでも不自由無く使えると思います。

使い方は以下のサイトに詳しく書いてあるので参考になります。
Angel Browserの使い方

2011年12月4日日曜日

Android開発環境を整える

初めまして。これからプログラマとして覚えた事をちょろちょろと書いていきたいと思っています。

それではWindows7の64bit版へAndroid開発環境を導入する方法について。

4ステップ必要になります。
  1. Java JDKのインストール
  2. Eclipseのインストール
  3. EclipseにAndroid開発ツールをインストール
  4. Android SDKのインストール
1.Java JDKをインストールする

上記サイトからJDKのダウンロードを選択してインストールして下さい。


2.Eclipseのインストール

上記サイトから最新版のEclipseをダウンロードします。

するとバリエーションを選択しなければならないのですが、
Ultimate(JREあり)版を選択しました。(JavaのJREあり版でも問題ないはず)

800Mbyte程あります。
ダウンロードしたらCドライブ直下で解凍してください。
"C:\pleiades-e3.7-ultimate-jre_20110924\eclipse"の中に"eclipse.exe"があります。
階層が深いのでショートカットを作っておくと良いです。

起動しようとすると以下の警告が出ますが気にしなくて良いです。
毎回出るので"ファイルを開く前に常に警告する"のチェックは外しておくと良いです。

起動時に、ワークスペースをどこにするかを聞かれますが、そのままで良いです。
起動する度に聞かれるので、"今後この質問を表示しない"にチェックしておきましょう。



3.Android開発環境のインストール

eclipseにAndroid開発環境をインストールします。
メニューの「ヘルプ」→「新規ソフトウェアのインストール」を選択して下さい。

追加を押します。

名前とURLの入力を促されるので、名前は適当に付けて、
URLは"https://dl-ssl.google.com/android/eclipse/"として下さい。

すると開発ツールが出てくるのでチェックを入れて次へ

”使用条件の条件に同意します”にチェックして「完了」を押すとAndroid開発環境ダウンロードが始まります。

しばらく待っていると警告画面が出てきたりしますが、気にせず続行します。

Android開発環境のインストールが終わるとEclipseの再起動が促されるので再起動します。


4.Android SDKインストール
上記からzipの方をダウンロードして、C直下へ解凍します。
"C:\android-sdk-windows"のようなパスになります。

SDK Manager.exeがあるので実行して下さい。
とりあえず全部チェックして、Installボタンを押します。


終了したらEclipseを立ち上げ、「ウィンドウ」→「設定」を開きます。

「Android」項目のロケーションに、Android SDKをインストールしたパスを入力します。
「適用」ボタンを押して、Androidのバージョンが表示されたら成功です。