ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2010年7月8日木曜日

EditTextの初期表示に薄く文字を表示させるアレ

MixiPhotoRoom1.1.6をリリースしました。

タイトル的なコメントを入力できるようにしました。
(タイトル的なコメントはこれだと信じたい・・・)


EditTextの初期状態で文字を表示させる方法がわからなかったのでメモ。

レイアウト.xmlで


<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:inputType="text"
android:hint="@string/str_title_comment"
android:id="@+id/edt_comment">
</EditText>


のようにandroid:hintに設定してやればOK


↓こんな感じで表示される



2010年7月7日水曜日

Intentで受け取るURI

MixiPhotoRoom1.1.5リリースしました。

アストロから写真が登録できないとコメントがあったので対応。

1.1.2までは登録できてたんですが、1.1.3の対応ですっかり忘れていた。


以下プログラムの説明

SENDインテントで画像を受け取ったときに、Fileスキーマ(file://~)で受け取る場合と
Contentスキーマ(content://~)で受け取る場合があるので、注意が必要。

AndExplorerとかだと
 デバイス>写真(~)から選択した場合はContent
 SDカード>ファイル選択の場合はFile

↓みたいに振り分ける



Bundle extras = getIntent().getExtras();
if (extras != null) {
Uri uri = (Uri) extras.get(EXTRA_URI);
String scheme = uri.getScheme();
if ("file".equals(scheme)) {
//file://~の場合
} else if ("content".equals(scheme)) {
//content://~の場合
}
}


2010年7月6日火曜日

AnimationDrawable

ロード中の画像みたいにクルクル回したい場合はAnimationDrawableを使う。
(ゲームのスプライトアニメーション的なやつ)

【アンドロイドSDKインストールディレクトリ】\platforms\android-4\data\res\drawable\ic_popup_sync.xml
あたりを参考に。

ic_popup_sync.xml
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/ic_popup_sync_1" android:duration="200" />
<item android:drawable="@drawable/ic_popup_sync_2" android:duration="200" />
<item android:drawable="@drawable/ic_popup_sync_3" android:duration="200" />
<item android:drawable="@drawable/ic_popup_sync_4" android:duration="200" />
<item android:drawable="@drawable/ic_popup_sync_5" android:duration="200" />
<item android:drawable="@drawable/ic_popup_sync_6" android:duration="200" />
</animation-list>

android:durationを小さくすれば早く画像が切り替わる。


Activity抜粋

AnimationDrawable d;
private ImageView imgView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imgView = (ImageView) findViewById(R.id.ImageView01);
d = (AnimationDrawable) getResources().getDrawable(android.R.drawable.ic_popup_sync);
imgView.setImageDrawable(d);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus) {
d.start();
}
}
onWindowFocusChangedとかでstartするのがポイント。
onCreateとかonResumeでstartさせてもアニメーションしてくれない。

詳しくは

2010年6月27日日曜日

Httpclient MultipartRequestでContent-Lengthヘッダが消えた件

原因はInputStreamBodyらしい。
InputStreamBodyのgetContentLength()は必ず-1を返却しているようなので
オーバーライドしてファイルサイズを返却するように修正。

修正前:
entity.addPart("file", new InputStreamBody(stream, "application/octet-stream", fileName) ;

修正後:
entity.addPart("file", new InputStreamBody(stream, "application/octet-stream", fileName) {
@Override
public long getContentLength() {
return fileSize;
}
});


リファレンスに説明あるんだろうな・・・。

2010年6月5日土曜日

Android JUnit Testでエラーになる件

Android JUnit実行時に

 「Test run failed: 【テストクラス名】」

となること3時間。

やっと解決。

元プロジェクトと、テストプロジェクトのパッケージが同じだったのが原因。
(AndroidManifest.xmlのmanifestタグのpackage属性)

テストプロジェクトのパッケージパスの最後に「.test」を追加したら解決した。

ふー。

2010年5月26日水曜日

更新のMenuIcon

android.R.drawableには無いんだけど、[AndroidSDK]/platforms/android-1.6/data/res/drawableフォルダにはic_menu_refresh.pngってのが存在している。


謎だ。


仕方がないのでpngファイルを自分のワークスペースにコピーして使用。



無事表示できたんだけど、グラデーションしてくれない。
GMailアプリとかも同じだからこういうものなのか?
画像の問題?

2010年5月25日火曜日

OptionMenuの表示

こんな感じのメニューを作成
  

[menu.xml]
<menu android="http://schemas.android.com/apk/res/android">
<item title="menu01" id="@+id/menu01"></item>
<item id="@+id/menu02" title="menu02" icon="@android:drawable/ic_menu_more">
<menu>
<item checkable="false" title="item01" id="@+id/item01"></item>
<item checkable="true" title="check01" id="@+id/check01"></item>
<group id="@+id/group01" checkablebehavior="all">
<item id="@+id/check02" title="check02"></item>
<item title="check03" id="@+id/check03"></item>
</group>
</menu>
</item>
<item title="メニュー3" id="@+id/menu03" titlecondensed="menu03" icon="@android:drawable/ic_menu_more">
<menu>
<group checkablebehavior="single" id="@+id/group02">
<item id="@+id/select01" title="select01" checked="true"></item>
<item title="select02" id="@+id/select02"></item>
<item id="@+id/select03" title="select03"></item>
</group>
</menu>
</item>
</menu>

・GroupのcheckableBehaviorをall→チェックボックス
・GroupのcheckableBehaviorをsingle→ラジオボタン
・checkableBehaviorの設定した場合は、子Itemのcheckableを設定しない。
・親ItemのtitleとtitleCondensedを設定すると、メニューの名前(ここだとmenu03)とサブメニューのタイトル(メニュー3)に異なる文字を表示できる。

※階層はこんな感じ

[Activity.onCreateOptionsMenu]
  @Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
return true;
}

[Activity.onOptionsItemSelected]
  @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.check01:
case R.id.check02:
case R.id.check03:
if (item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
return true;
case R.id.select01:
case R.id.select02:
case R.id.select03:
item.setChecked(true);
return true;
}

return super.onOptionsItemSelected(item);
}