Android SDK TextViewを「あいうえおかき…」と省略して1行にまとめる

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

android:scrollHorizontallyをtrueにしろ、android:linesを1にしろ、android:maxLinesを1にしろ、そして、android:ellipsizeを設定しろ、とネット上にいろいろと情報がありますが、なぜか僕の環境だと「…」を表示してくれませんでした。
その解決方法がわかったのでメモ。

<TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:singleLine="true"
        android:textColor="@drawable/menu_right_text" />

このように、singleLineとellipsizeを設定したらいけました。
ちなみに、ellipsizeには以下の設定ができます。

例:あいうえおかきくけこ

指定値 デフォルト 動作
none 何もしない
start …おかきくけこ
middle あいう…くけこ
end あいうえおか…

Android SDK Bitmapをあらかじめ縮小してから読み込む(OutOfMemory対策)

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

今の端末だと10Mピクセルを越えるカメラを搭載した端末が普通になってきており、そのファイルサイズも数MBに及びます。
AndroidでBitmapFactoryを利用してフォトライブラリーから画像を読み込んだりすると思いますが、そのままその画像を読み込んでしまうと、しばしばOutOfMemoryとなりアプリが強制終了してしまいます。
そこで、実際に画像を読み込む前にある程度縮小してから読み込むことで、メモリが足りなくなることを防ごうというのが今回のネタです。

BitmapFactory.OptionsのinSampleSizeを指定して画像を縮小した状態で読み込む

処理の流れ的にはまず画像のサイズを取得して、サイズが大きかったら縮小指定してから読み込もう、という感じです。

InputStream inputStream = getContentResolver().openInputStream(data.getData());

// 画像サイズ情報を取得する
BitmapFactory.Options imageOptions = new BitmapFactory.Options();
imageOptions.inJustDecodeBounds = true;
BitmapFactory.decodeStream(inputStream, null, imageOptions);
Log.v("image", "Original Image Size: " + imageOptions.outWidth + " x " + imageOptions.outHeight);

inputStream.close();

// もし、画像が大きかったら縮小して読み込む
//  今回はimageSizeMaxの大きさに合わせる
Bitmap bitmap;
int imageSizeMax = 500;
inputStream = getContentResolver().openInputStream(data.getData());
float imageScaleWidth = (float)imageOptions.outWidth / imageSizeMax;
float imageScaleHeight = (float)imageOptions.outHeight / imageSizeMax;

// もしも、縮小できるサイズならば、縮小して読み込む
if (imageScaleWidth > 2 && imageScaleHeight > 2) {	
	BitmapFactory.Options imageOptions2 = new BitmapFactory.Options();

	// 縦横、小さい方に縮小するスケールを合わせる
	int imageScale = (int)Math.floor((imageScaleWidth > imageScaleHeight ? imageScaleHeight : imageScaleWidth));	

	// inSampleSizeには2のべき上が入るべきなので、imageScaleに最も近く、かつそれ以下の2のべき上の数を探す
	for (int i = 2; i < imageScale; i *= 2) {
		imageOptions2.inSampleSize = i;
	}

	bitmap = BitmapFactory.decodeStream(iStream, null, imageOptions2);
	Log.v("image", "Sample Size: 1/" + imageOptions2.inSampleSize);
} else {
	bitmap = BitmapFactory.decodeStream(inputStream);
}

inputStream.close();

BitmapFactory.OptionsのinSampleSizeに2のべき上を入れ、それを指定して画像を読み込むことで、2のべき上で縮小された画像を読み込むことができます。
たとえば、inSampleSize=2であれば、 1/2に縮小された画像が、inSampleSize=4であれば、1/4に縮小された画像が読み込まれます。
inSampleSizeには2,4,8,16と2のべき上を入れます。

読み込む画像の階調を指定して読み込む

読み込む際の画像サイズの縮小は解像度だけでなく、階調を変えることでサイズを落とすこともできます。

BitmapFactory.Options imageOptions = new BitmapFactory.Options();
imageOptions.options.inPreferredConfig = Bitmap.Config.ARGB_8888;

設定できる階調は以下です。

  • ARGB_8888:alpha/R/G/B 各8bit ー 8*4 = 32bit = 4byte / pixel
  • ARGB_4444:alpha/R/G/B 各4bit ー 4*4 = 16bit = 2byte / pixel
  • RGB_565:R(5bit)/G(6)/B(5) ー 5+6+5 = 16bit = 2byte / pixel
  • ALPHA_8:αのみを8bit ー 8bit = 1byte / pixel

体感的にはアルファー値の無い写真などは、RGB_565とかはそこまで劣化が気にならない程度でサイズが半分になるのでおすすめです。

まとめ

画像取得系はメモリを消費して大きい画像を取得するとすぐにOutOfMemoryで落ちるので、読み込む前にサイズを小さくしよう!

【いまさら】あけましておめでとうございます

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

2013_happy_new_year_postcard.png
△ 今年の年賀状(元ネタはこちらから)

いまさらですが、
あけましておめでとうございます!

今年もexilias.netを、そしてクソみたいなコンテンツをよろしくお願いします。

 

【ちょっとだけ2012年を振り返る】

2011年はアプリ作りまくりで、ゲーセン行きまくりの年でしたが、2012年は大学受験があったのでゲーセンからは遠ざかり、またアプリリリースも少なく終わりました。
ただ、友だちと遊んだり、ネット上ではなくリアルの方で結構充実してたと思います。
あと、ゲーセンに飽きた代わりに、カラオケにめっちゃハマった。
一週間のうちに3日とかカラオケに行った週もありました…。

■1月
・明治神宮で初詣。合格祈願の絵馬とお守りを買う
・相変わらずオシャンティーなおみくじ
・Apple Storeの初売りでLuckyBagを買う。ハズレiPod touchでキレる
・iPhone / Android アプリ「半額の達人」をリリース
・モバマスにハマる

■2月
・iPhoneアプリ「目線モザイク」をリリース
・iPhoneアプリ「強いられカメラ」をリリース
・このネタもう覚えてる人いないよね
・モバマスにハマる

■3月
・iPhoneアプリ「顔面センターチェック」をリリース
・卒業しちゃったね
・The new iPadを買う
・モバマスにハマる

■4月
・DTMを始める
・おんがくたのしい
・モバマスにハマる

■5月
ELECTRIBEを買う
・最近使ってない
・モバマスにハマる

■6月
・受験ヤバい
なのにPSO2を始める
・やばい
・モバマスにハマる

■7月
・筑波大学受験
・\合格
・やっとFF13クリア
ストーリーがクソ
・モバマスに飽きてくる

■8月
モバマスにキレる
・FF13がクソだったのでFF10をプレイする

■9月
謎のメールが届く

■10月
・\誕生日/
・iPhone / Android アプリ「3500円のカツカレー」をリリース
・ネトウヨに絡まれる
・安倍さんおめでとう

■11月
・エヴァQを見る
わけわかめ

■12月
・クリスマスを研究室ですごず
・ラボ畜
・終わらない
・デスマ

なんか、前半はソーシャルゲームのモバマスにどっぷりハマり、後半はラボ畜になってたという…。
それでもまだ終わりそうにないので、今年の抱負は、
締め切りを守る
ですかね…(遠い目)

 

ということで、昨年はどうもありがとうございました。
今年もよろしくです!

【iPhone】iOS / Android 向け無料ゲーム「3500円のカツカレー」をリリースしました

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

MiddleIcon.png

今話題のカツカレーをネタにしたゲームが登場。
「3500円のカツカレー」

あなたはカレーショップのオーナーとなり、より多くの売上を達成してください。
つぎつぎと来店するお客さんは、それぞれ食べたいカレーが異なっています。
お客さんが食べたいと思っているカレーをメニューから選択し、迅速に提供しましょう!
正しいカレーを提供できたら売上が伸び、逆に間違えるとお客さんは帰ってしまいます。
さあ、本日の売上はおいくら?

iOS: ダウンロード

Android: ダウンロード

【紹介してくださったサイト様】
(私が補足できたものです。抜けがあるかもしれません)

【3500円のカツカレー】アクションアプリ紹介・iPhoneゲームアプリの攻略サイト|iPhone Games

3500円のカツカレーがAppStoreに登場!! 話題のあの総裁もお客さんとしてやってくる(かも) – iPhoneで遊ぶ夫

3500円のカツカレー | APPさん

噂の3500円のカツカレーがiPhoneで買える!? かもしれないアプリがリリース さっそく試してみましたよ – アップス!

あの人に、3500円のカツカレーを素早く提供せよ! Androidで「3500円のカツカレー」 | AndroidニュースやアプリのAppLab

本日のたぶん新作をテキトーにプレイ!本日は9本!iPhoneにもカツカレーブームがやってきた!(10月12日金曜日分) | あぷまがどっとねっと

3500円のカツカレー | appliko(アプリコ) | スタッフレビュー

アプリ野郎Z: 【レビュー】ツッコまずにはいられない!『3500円のカツカレー』がリリース!

3500円のカツカレー | ゲーム>アクション | アンドロイドアプリ情報サイト[アンドロイダー]

自民・安倍総裁の「3500円カツカレー」が待望のアプリ化!!! 麻生太郎氏もゲストとして登場  | 【EXドロイド(エックスドロイド)】

[iPhone App Focus] 飲み会で使えそうな「空気読み」の「2」が出ています!他 | 覚醒する @CDiP

「Siriが少しかしこくなってる」iPhoneの話題 vol.371 (キタミテレビ)

3500円のカツカレー iPhone アプリ 無料!!│スマートドクター 大阪

「あの政治家」に「3500円のカツカレー」をひたすら注文するゲームアプリが登場 – すまほん!!

【無料】3500円のカツカレー: 便利・ハマるiPhoneアプリ紹介ブログ

アンドロイド(Android)の3500円のカツカレーご紹介|ベストロイド

マッキーニュース あの方に「3500円のカツカレー」を食べさせてあげるアプリ

3500円のカツカレー – meet i [ミートアイ] | iPhone情報ポータルサイト

(サイト名アルファベット/50音順・敬称略)

紹介ありがとうございました!

【iPhone】iOS / Android 向け無料ゲーム「半額の達人」をリリースしました

Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip

2012-01-07_01.jpg

半額力。
あなたは、スーパーで起こる半額戦争に勝つことができますか?

日々巻き起こる半額弁当争奪戦。
あなたは、その半額戦争でイニシアチブを発揮できているでしょうか。
このアプリは手軽に半額力、つまり半額シールが弁当に貼られてからいち早く手に入れられる能力を鍛えることができるアプリです。

iOS: ダウンロード

Android: ダウンロード