ねこバタ会議

スマホアプリ制作に関するブログです。

カテゴリ: Android

以前以下の記事を書きました。
AndroidでViewの枠線と背景色を動的に変更する 

上記記事はres/drawableに用意したborder.xmlを用いて、背景色や枠線の色を動的に変化させるというものです。
ただ、この方法だと、画面内に複数のViewがあって、それぞれを変化させたい場合には一工夫必要です。

その場合は、対象のViewのBackgroundResourceに対して、GradientDrawableを生成してセットすることで実現できます。

GradientDrawable bgShape = new GradientDrawable();
bgShape.setStroke(1, Color.parseColor("#FFFFFFFF"));
bgShape.setCornerRadius(2);
bgShape.setColor(Color.parseColor("#000000FF"));
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
    targetView.setBackgroundDrawable(bgShape);
} else {
    targetView.setBackground(bgShape);
}

要はborder.xmlで定義したシェイプと同じものを動的に生成する、という感じですね。
私の場合はカスタムしたViewのメソッドとして組み込んで使用していました。

pubilc void setBorder(float width, float radius, int borderColor, int backColor){
	GradientDrawable bgShape = new GradientDrawable();
	bgShape.setStroke(width, borderColor);
	bgShape.setCornerRadius(radius);
	bgShape.setColor(backColor);
	
	if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
	    setBackgroundDrawable(bgShape);
	} else {
	    setBackground(bgShape);
	}
}

という感じですね。

なお、同様のことをiOS向けにXCodeで書く場合についても書いておきます(Objective-Cです)。

[view setBackgroundColor:[UIColor blackColor]];	// 背景色
[view.layer setBorderColor:[[UIColor whiteColor] CGColor]];	// ボーダー色
[view.layer setBorderWidth:1.0];	// 太さ
[view.layer setBorderRadius:2.0];	// 角丸

のような感じで普通に設定できると思います。
記憶が定かで無いので間違っている部分もあるかもしれませんが、Androidよりだいぶ手軽にできると思います。
なお、Swiftは全く知りませんm(__)m

以上、「続・Viewの枠線と背景色を動的に設定する Android&iOS(Objective-C)」でした。

先日Twitterで書いたのですが、ワーズ・アンド・マジックのAndroid版のDL数が急に伸びたことがありました。
原因がよくわからなかったのですが、よくよく調べてみたところシャープ公式アプリのSHSHOW様に掲載されたからでした。

CGoD90SUkAEvWma


ちなみにSHSHOW様にはアンドロイダーでも紹介枠獲得のための告知がありますが、アンドロイダー枠ではなく、直接ご連絡をいただきました。

レビューサイト等に掲載された場合、DL数が直接的に上がるのはだいたい2~3日の場合が多いのですが、SHSHOWの場合は1日あたりに紹介されるアプリ数がそれほど多くないこともあってか、かなり効果が継続した感じがします。
とはいえ10日くらい経つとDL数も平常通りに…と思いきや、なぜかここにきて謎の回復を遂げています。

dlcount

今度は原因がさっぱりわからず、ついに世間に理解される日が来たか…と感慨に浸っていたのですが、よくよく見てみるとロールプレイングゲームカテゴリの10位に入っている「異世界に生きる」の関連アプリのトップにワーズ・アンド・マジックが掲載されており、どうやらそのおこぼれにあずかっているのではないかという感じがします。

googleplay1

 googleplay2

Google Playの場合はこうした関連アプリの表示や、現在注目を集めているアプリの表示が地味にDL数に反映されているように思います。
iOSではブースト広告が問題になっていますが、それ以前にApp Storeでのアプリの露出方法が非常に限られていて、ランキングも直近のDL数が非常に重視される仕組なので、まずそこら辺を改善してくれないかなと切に願います。

「異世界に生きる」、がんばれ!
…ではなく、ワーズ・アンド・マジック、がんばれ!

ついでと言ってはなんですが「異世界に生きる」についてご紹介を…と思ったのですが、iPhone AC番外レポート様のレビューが詳しいので、そちらをご参照いただければと思います。

異世界に生きる:Google Play

異世界に生きる:App Store

googleplay3
 

最近ご無沙汰しておりますが、ゲーム画面のレイアウトと仕様の詳細を決めるという非常に地味なところで延々と悩んでいるためですね。

まあしかし少数ながらもブログを読んでいただけている方もいらっしゃるので、ここで今北工業さんとっとこさんにならって、ワーズ・アンド・マジックのAndroid版のDL数の履歴を公開したいと思います。
iOSはiTunes Centerが非常に使いづらくてストレスがたまるので、やりません。
はい、建前です。本当はiOS版はよりリアルに切実なので、やる気になれないのでやりません。

DL数には波があるものですが、それぞれ何かのきっかけで上がったりしたところは、私の記憶にある事柄を記載しています。
ただ、全部を網羅しているわけではありませんし、他にも何かのきっかけがあったものもあると思います。


グラフ
こうして見ると、やはり牛丼の威力がものすごいですね…。

予約TOP10のスタートダッシュがとてもありがたかったのですが、ちょうどリリースから2、3日くらいGoogle Playのランキングが延々と更新されなかったのはとても痛かったなと思います。
また、1/8あたりにも突然DLされている日があるのですが、この辺りもGoogle Playのランキングが更新されず、急上昇作品の一覧も更新されなかったので、その後の継続につながらなかった記憶があります。 

今のDL数は平日が30~50、休日は50~60というところでしょうか。
多分、今後上がることはあまりないんじゃないかなと思いますが、新作を出した後は相乗効果もあるかもしれないので、がんばって出していきたいところです。

自分としては多くの方に遊んでいただけて、とても嬉しく思っています。
また、今後のためにもとても勉強になる作品でした。

新しい作品はこれを越えられるように、がんばって作りたいと思います! 

本日、Google Playストアにて、ワーズ・アンド・マジックのAndroid版が配信開始されました!

 ワーズ・アンド・マジック Gooogle Play

 
お待ちいただいていた方々、予約TOP10で予約していただいた方々、遅くなってしまい本当に申し訳ありません!!m(__)m

皆様からの応援と生暖かい目で見守っていただいたことで、こうしてリリースまでこぎつけることができました。
もっと早く進むかと思っていたのですが、Android特有の課題がたくさんあり難航してしまいました。
それについてはまたの機会に詳しく書くとして、今はとりあえず遊んでみてもらえればと思います!

iPhone版から若干変更されている点があります。
・課金機能をつけました(広告非表示等ですね)。
・日本語の問題の時に問題をパスすることができるようにしました。
その他レイアウト等が少し変わっています。

また、端末によってはバッテリ消費が異常に早いかもしれません汗
メディアサーバーの暴走によるようなので、これについてはちょっと様子を見ていきたいと思います。

バグ報告等ありましたら、お知らせいただければ幸いですm(__)m


Screenshot_2014-12-18-12-33-05


それにしても、Google Playストアのアプリ画面、しばらく見ないうちにシャレオツになってますね!
以前より洗練されて使いやすくなった感じがします。

ダウンロード数1が光ってますね!
自作自演でレビューを書いたのですが、早速評価していただいている方がいらっしゃって感激しました。 
ゲコゲコ太様、ありがとうございます!

Screenshot_2014-12-18-12-52-15



【注意】ここに記載された内容の場合、一つのViewに対してのみ変更することが出来ます。
複数のViewの背景や枠線をそれぞれ変更したい場合は、以下の記事をご参照下さい。
続・Viewの枠線と背景色を動的に設定する Android&iOS(Objective-C)

ボタンに枠線と背景色を動的に設定する方法がわからなかったので、メモです。

まず、 以下のようなXMLファイルを用意して、res/drawableに適当な名前で保存します。
 
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2px" android:color="#ffffff" />
<padding android:left="2px" android:top="2px"
android:right="2px" android:bottom="2px" />
<corners android:radius="4px" />
</shape>
XMLファイルをdrawableに設定すれば、枠線が表示されます。ボタンに白い枠線が表示されました。
button.setBackgroundResource(R.drawable.border);
sc1

この時に背景色を変更しようとして以下のように書くと、ボーダーが消えてしまいます。
button.setBackgroundColor(Color.GREEN);
sc3


どうやら、背景はボーダーや色などが一括で設定されるようです(ものすごく初歩的なことだと思うのですが、あまり理解していません。すみません)。
というわけで、一旦背景の情報を取得してから変更することでボーダーや背景を変更することができます。

// 背景色を変更
GradientDrawable bgShape = (GradientDrawable)button.getBackground();
bgShape.setColor(resColor(R.color.Green));
bgShape.setStroke(4, resColor(R.color.DeepPink));
bgShape.setCornerRadius(2.5f);
resColor()はリソースからColor情報を変換するためのメソッドで、以下のような感じです。
int resColor(int res){
    return getResources().getColor(res);
}
setColorで色を設定、setStrokeで枠線の幅と色、setCornerRadiusで角の丸みを変更しています。
これを適用すると、以下のように反映されました。
 
sc2
 
ちょっと南米の昆虫のような配色になっていますね。
ちなみにリソースのカラー設定は、stackoverflowにあった以下のトピックから選んだものを使用しています。

 Android color xml resource file : stackoverflow

↑このページのトップヘ