Mahiru Kamimori のすべての投稿

お話を書いたり、絵を描いたりしています。ノベルアプリ『KIRIKA~同じ人間がいる、もう一つの世界~』をAndroidとiPhoneで配信中です!

【Androidアプリ作成】imageViewクラスで画面背景を設定する

imageViewは画像を表示するために使用するクラスです。
今回はimageViewクラスを使用した画面背景設定方法について記載します。

<ImageView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/game_background" />

※ @drawableの画像は各自で定義してくださいね。
@drawableの定義が分からない方はこちらを参照してください。
>> @drawableでデザイン管理!

このコードを<FrameLayout>定義後、一番に指定します。
FrameLayoutのwidthとheightにはfill_parentを指定してください。

これで実行すればすぐに画面に背景を適用させることができます!

ただ、Androidは小さいやつから大きいタブレットタイプのものまでいろいろありますから、
解像度に応じて画像を用意しておく必要があります。
用意していない場合は小さい画像を引き伸ばして表示されてしまいますので、あしからず。

2011.6.12
神森 真昼

【Androidアプリ作成】広告表示にはViewGroup#addViewを使え

ゲームで広告を表示したいけど、広告のために複雑なプログラムを書くのはちょっとめんどい。

そんなときは、xmlで広告とゲームを同時に表示するレイアウトを作っておいて、
広告用のViewを常時表示しつつ、ゲーム用のViewを必要に応じて入れ替えると
ゲーム部分のプログラムと広告用のプログラムを分離できるので、保守性が高まります。
使うのは以下の2つです。
・LayoutInflater#inflate

// レイアウトリソースIDを指定してViewを生成する
・ViewGroup#addView

// ViewGroupにViewをaddする

■レイアウト(app.xml)
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/vgApp"

android:layout_width="fill_parent"

android:layout_height="fill_parent"
>

<!–
ゲーム –>

<View

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

<!– 広告 –>

<広告会社提供のView

android:id="@+id/vwAd"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:scrollbars="none"

android:layout_gravity="bottom"

android:layout_marginBottom="0px" />
</FrameLayout>

■Activity
以下のようなメソッドを追加
void setGameView(int layoutResID)
{

// ビューを変更する

View vw = getLayoutInflater().inflate(layoutResID, null);

ViewGroup vgApp = (ViewGroup)findViewById(R.id.vgApp);

vgApp.removeViewAt(0); // 前回のビューを潰して

vgApp.addView(vw,0); // 新しいビューを設定
}

■入れ替えるView(title.xml)
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<ImageView

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/title_bg"
/>
</FrameLayout>

・・・ここまで来れば、あとは必要なタイミングでsetGameView(R.layout.title)とか呼ぶだけ!楽チン。
Activityのとこに書いてある「vgApp.addView(vw,0);」がミソです。

2011.6.11

NECO

【新着アプリ】ねこニャンの百マス計算をリリース♪

ついに、ついに・・・
本日、初制作アプリをAndroidマーケットにリリースしました!!、(*^0^*)ノ

でも、ダウンロードした方のスマフォでちゃんと動くか不安です。:;
ここのブログを見てダウンロードした人は、ぜひぜひ感想なり、バグ報告なりください^^

【 ねこニャンの百マス計算をダウンロード 】
https://market.android.com/details?id=net.darkdrive.android.hmas&feature=search_result

20110610_hmas1

↓ケータイからダウンロードしたい方はコチラ

20110610_hmas2

百マス計算とは、縦10・横10のマスの左と上の数字をランダムに並べそれぞれ交差するところに
指定された計算方法で答えを記入する計算トレーニングです。本アプリではたし算(20問)、ひき算(20問)、かけ算(15問)の3種類の計算方法と問題を選択でき、
遊ぶことができます。各種問題のタイムの記録、11問目~15問目は時間制限のある問題を用意しております。
百マス計算を効果的に遊ぶ方法としては定期的に簡単な問題を解くことが脳の活性化によいと
されています。早くやることに囚われることなく脳トレ用のアプリとしてご活用いただけたら幸いです。

★ゲーム仕様
たし算 全20問 (11問~15問目は時間制限あり問題)
ひき算 全20問 (11問~15問目は時間制限あり問題)
かけ算 全15問(11問~15問目は時間制限あり問題)

次の問題に進むときはパネルをページをめくるようにタッチ(もしくは下の「→」キーを押す)と次の問題に移動します。
また近いものがみづらい方のためにも拡大、縮小を用意しています。(問題参照時に調整することが可能です。)
※時間制限のある問題は私、制作者側の意向としましては平均的にこれくらいの速さで解けるのが一般的ではないか、という
時間を制限に設けたいと考えています(現時点では大目の時間を設定しています)が、こればかりはダウンロードしてくださった皆様が実際に解いた時間の平均を算出し、アプリに修正をかけたいと考えております。

もしお手数でありませんでしたら、問題と解いた時間を教えていただけたら幸いです。
不具合などありましたら、すぐに対応できるようにいたしますので随時ご報告ください。

2011.6.10
神森 真昼

追記(2011.6.14)
おかげさまで「ねこニャンの百マス計算」はリリース2日目で100ダウンロード突破しました(・▽*)ノ
初めて作ったアプリをたくさんの方にダウンロードしていただき光栄です。
次回作のアプリを現在作成中ですので、今後もよろしくお願い致します。

追記(2011.7.9)
1000ダウンロード突破しました、(^▽^)ノ
ダウンロードしてくださった皆様に心より御礼申し上げます。

【Androidアプリ作成】@colorで色管理!

@stringと同じ形式で色コードを管理できちゃいます。
今日はその方法を書きます。

まずはvaluesフォルダの中にcolors.xmlというファイルを作成します。
(colorではなくcolorsなのでお間違いのないよう・・・色のデータベース、集合なので複数形になっているとかで覚えましょう。)

【 values-jaフォルダにも同じファイルを入れなくてもいいの? 】
入れる必要はありません。
どんな言語でもvaluesフォルダ内のデータは読み込まれます。
(もちろん、日本語と英語で色を変えたいのであればそれぞれの定義ファイルが必要ですが、
そうでなければ必要ありません。)

【 色管理をするメリット】
string.xmlと同じようにそのファイルを開けばアプリ全体の色修正をかけられるので、
色の差し替えが大幅に楽になります。

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<color name="red">#ff0000</color>

<color name="green">#00ff00</color>

<color name="blue">#0000ff</color>
</resources>

【 colors.xmlで定義された色の読み込み 】

試しに赤色が定義されたリソース(red)を呼び出します。

<Button

android:id="@+id/btn01"

android:textColor="@color/red">
</Button>

これは例なのでredとかgreenとかいう名前をつけましたが、
本来ならアプリとかで使用する、タイトルは赤でボタンは緑のように使っていきましょう。
では使ってない人は早速色をリソース化を進めましょう。

2011.6.9
神森 真昼

【Androidアプリ作成】@drawableでデザイン管理!

@stringに引き続き、@drawableについて書きます。
@stringについてはこちらをご参照ください >> @stringで定数管理!

考えは全く@stringと一緒です。
res/drawableフォルダに保存した画像やレイアウトテンプレートを参照できます。
ちなみにdrawableにも日本語と英語を区別するための

drawable-ja (日本語用の素材はここに保存)
drawable

(英語用の素材はここに保存)

【 @stringとはここ違う 】
@stringの場合はstring.xmlがあってそこに書いた定数が呼び出して使えるが、
drawableには画像や使いまわしたいレイアウトのXMLを保存できること!!

【 drawableに保存した画像データを呼び出すには? 】

<Button

android:background="@drawable/画像ファイル名"

android:layout_marginLeft="5dip"

android:layout_marginRight="5dip">
</Button>

※画像ファイル名には拡張子をつけません。
Androidではファイル名をIDとして管理していますので、拡張子は不要です。

【 drawableに保存したレイアウトデータ(XML)を呼び出すには? 】

<Button

android:background="@drawable/レイアウトデータ(XML)名"

android:layout_marginLeft="5dip"

android:layout_marginRight="5dip">
</Button>

※こちらも同じくファイル名に拡張子は不要です。

【 drawableに保存したレイアウトデータはどうやって作ればいいの? 】

下記の記事をご参照ください。
http://blogs.yahoo.co.jp/hiro5_188/20029655.html
ボタンの配色グラデーションのデザインを使いまわすために作成した
レイアウトデータ(XML)です。

素材屋あんどろい堂でもデザインソースを配布していますので、
ぜひサンプルに使ってみてください。

2011.6.8
神森 真昼

【Androidアプリ作成】@stringで定数管理!

前にも「英語と日本語を使い分けるには?」という記事でも多少書いたのですが。
その前にまずは@stringという基本中の基本から掘り下げてみます。

@string ・・・stringファイルから定数を参照しますよってこと
(@drawableもようするに同じことなのです。)


string.xmlを設定するには 】

プログラムで使いたい文章や用語などはあらかじめstring.xmlに設定します。

設定したらここに保存

>>
res/values-ja/string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="blog_name">神森真昼の小説と波の世界</string>

<string name="contents01">Android</string>

<string name="contents02">日記</string>

<string name="contents03">ドロイド君</string>
</resources>

※英語でも対応する場合はstring.xmlの英語バージョンをvaluesフォルダに保存します。


string.xmlに設定した定数を呼び出すには? 】

<Button

android:id="@+id/blog1"

android:text=@string/blog_name">
</Button>

こうやって書くとボタンの表示がさっき設定した
「神森真昼の小説と波の世界」になります。

定数を@stringを使って管理しないと、あとで変更したい場合に
すべてのファイルに修正をかけなければなりません。
とりあえずtextに直接書いてあとで管理・・・などすると怠りがちになりやすいです。
(つまり、私のことなんですが・・・orz

ちゃんと管理しやすいベースを作ってから、楽しくアプリ開発をしていきましょう♪

2011.6.7
神森 真昼

【Androidアプリ作成】使える!逆引きAndoroidリファレンス

Android関係でアップしたコンテンツを分かりやすくINDEXにまとめてみました。
ブログ内の記事にリンクしていますのでご活用ください。
(記事を追加したらここも随時追加していきます^^)

基本
01.Androidプロジェクト作成手順

XMLを利用したレイアウト関連
01 android:layout_weightってなに?
02 android:layout_widthとandroid:widthは何が違うの?
03 英語と日本語で使い分けるには?
04 android:orientationプロパティのverticalとhorizontalの違い
05 wrap_contentとfill_parentの違い
06 ボタンのカスタマイズ
07 LinearLayoutを使ったボタンレイアウト
08 @stringで定数管理!
09 @drawableでデザイン管理!
10 @colorで色管理!
11 imageViewクラスで画面背景を設定する
12 ボタンをもっと角丸にするには?
13 解像度の違う端末に対応させるためには?
14 HorizontalScrollViewの使い方
15 TableLayoutの使い方
16 TableLayoutでborder(罫線)をつける方法
17 単純なコードでエラーがでるときに確認したいポイント
18 @stringをHTMLタグを使ってデコレーションする

HTML5関連
01 HTML5 Application cache を使ってみる
02
Android の WebViewのキャッシュについて

広告関連
01 広告表示にはViewGroup#addViewを使え
02 ネット収入に確定申告は必要か?

アニメーション関連
01 Canvas#setMatrixを使ったアニメーション

サウンド関連
01 SoundPoolを使う際の注意点

パフォーマンス関連
01
描画が遅い時はSurfaceViewを使って高速化
02 エミュレータの起動を高速化する方法

データベース関連
01 SQLiteを使うには?(前編)
02 SQLiteを使うには?(後編)

デバッグ関連
01 Androidのデバッグについて
02 InflateExceptionが出た場合の対処法
03 logcatを使って効率良くデバッグをしよう
04 シミュレータ画面を横表示に切り替える方法

機種関連
01 Android解像度別機種一覧表
02 解像度の低い端末をサポート対象外にする方法

アプリリリース情報
01 百マス計算
02 刹那の極意
03 計算ドリル
04 Touch the Elements
05 ブロック崩しdeトレハン!
06 百マス計算FAN
07 BLACK JACK
08 色コードブック

その他Android関係記事
01 fontの入れ替え
02 Androidの音声認識の罠
03 Androidの時計アプリを作ってみた
04 SIMフリー版GALAXY Sの日本語化に挑戦
05
デベロッパーになると詳細なインストール状況がわかる!

2011.10.26
神森 真昼
NECO

最終更新日
2013.5.9

検索ワード:逆引き 入門 辞典 ハンドブック 初心者 マニュアル

Androidアプリ鋭意製作中!

現在、Androidアプリを制作しています。

ブログで製作中に気付いたことやわかったことをまとめていき、訪問してくださった方々と情報が共有できたらと思います。(どちらかというと備忘録要素が強いですが^^;)

もし作ったアプリやその他コンテンツにご興味を持っていただけたのなら
下記も運営サイトになりますので、ご参照いただけたら幸いです。

[ DARK DRIVE ダークドライブ(Androidアプリと小説と波の世界)]
http://www.darkdrive.net/

タイトルそのままですが、Androidアプリ、小説、Web関係のことついて書いています。
コンテンツはまだ少ないですが、充実させていく予定です。

[ Flashゲーム ルカヤのクッキング ]
http://www.darkdrive.net/game/index.html

ゲームウォッチっていう昔任天堂が出していたシェフのゲームみたいなのを作りました。
ぜひ、ハイスコアとってランキングにぬりかえてください^^

今後ともどうぞよろしくお願い致します。

2011.6.3
神森 真昼 & NECO
(記事は二人で書いています。プロフィールはこちら>>http://www.darkdrive.net/android)

【Androidアプリ作成】android:layout_weightってなに?

表題そのままですが、この属性を聞いたとき、
layoutの重さだから、きっとレイヤーのことで、軽いと上位レイヤーで、重いと下位レイヤーに
なるんだ!と勝手に想像してみましたが、実際には全く異なります。

layout_weightはオブジェクトを配置するするときの占有比率を指定するときに使います。

つまり指定されたlayout内で、
「このAボタンは1番大きい、BボタンはAボタンの半分で、CボタンはBボタンの半分かな」みたいな
ものを指定したいときがあったとしたならこのlayout_weightが役に立ちます。

例1)

Aボタン
android:layout_weight="1"

Bボタン
android:layout_weight="0.5"

Cボタン
android:layout_weight="0.25"

こうすれば比率が変わります。
ちなみに1を指定すると100%を指定したことになります。
占有比率なので、割合で1は100%に相当しますからねw

ここで、じゃあこうしたらどうなるか・・・

例2)

Aボタン
android:layout_weight="0.5"

Bボタン
android:layout_weight="0.5"

Cボタン
android:layout_weight="0.5"

1ではなく0.5と全部指定。これで、先ほどの例1で指定したBボタンの大きさに
なるかというとなりません。
なぜなら全部同じだと差がないので、全て同じ大きさになります。

一番最初にはじめて組んでもなぜか下に出てこないというときは
このlayout_weightの重み付けがうまくいっていない可能性があります。
私はこれで最初つまづきました。だってHTMLだったら無条件で下に改行されて表示されるから
出てこないわけないという先入観があったからです:;

困ったらとりあえずlayout_weight="1"で指定してみてください。

2011.6.2
神森真昼

【Androidアプリ作成】android:layout_widthとandroid:widthは何が違うの?

すごく最初に気付いて、悩んだこと。
一つのタグにwidthが2種類設定できて、それがどういう区別をしていいのかわからないこと。
・・・というより、widthだけでなく、他のにもいろいろlayoutがつくかつかないかで変わるものが
たくさんあった。

要するにこういうことになるわけですが・・・

■android:width
「android:width」を記述したビューの中身に対して幅を指定する。

■android:layout_width
「android:layout_width」を記述したビューが、親要素に対して自分の幅を指定する。

言葉で説明するとどうもかたっくるしくて分かりづらい。
他の要素でも、layoutがつくかつかないかで親への指定か、子への指定かが変わるのです。

これはカンタンに作ってやってみるしかないです!
習うより慣れろって感じですが、ぜひやってみてください^^
(そして、いい覚え方を教えてください、すぐどっちがどっちか忘れてしまうので(笑)

2011.5.31
神森 真昼