だいぶGoogle+慣れました。
個人的には情報共有にはすごくいい!
でも、サークルで繋がる友達が少ないのが微妙なんですよね。
Androidアプリの評価を見るとまだまだ招待欲しい人多いみたいで。
ということで、招待して欲しい人がいたら、連絡下さい。
gmailアドレスと、簡単な自己紹介付けて下記まで。
masa.tam81@gmail.com
招待枠に制限があるので、自己紹介で面白そうな人、
繋がりたい人優先で招待させて頂こうと思います。
2011年9月11日日曜日
2011年9月7日水曜日
Android Tabを入れ子(ネスト)にする
タブをネストしたいときってあると思います。
アプリ作ってた時に参考にしたアプリがネストしてて、確かに情報的にそうなるよな、と思った。でも、作ってみたら、どうやるんだろ、と。
初めてタブを作った時にググったら、TabActivityを使うのと使わないのがあって、じゃあ、TabActivityで作ったタブの中で、使わない方法のタブ作りを、と思いました。
でも、なんか上手くいかなくて、調べてたら、タブの中にActivityを入れる方法が。
あ、これでTabActivityの中にTabActivity入れればいいんじゃないか、と。
サンプル。
メインのxml
ネストしたタブ
で、Activity
TabSampleActivity.java
ポイントは
tab2.setContent(new Intent(this, NestTabActivity.class));
インテントを入れること。
ネストするタブ
これでオッケー。
もちろんActivityなのでAndroidManifest.xmlでActivityの指定が必要。
# だいたい最初入れ忘れて例外吐くw
AndroidManifest.xml
できたのはこんな感じ。



だいぶ素っ気ないので、レイアウトは変更しましょう。タブとか背景とか。
実際のアプリではこんな感じで使いました。
メインのタブはアイコン付き、ネストしたタブは文字だけにするとまとまりが良いかもしれません。
アプリ作ってた時に参考にしたアプリがネストしてて、確かに情報的にそうなるよな、と思った。でも、作ってみたら、どうやるんだろ、と。
初めてタブを作った時にググったら、TabActivityを使うのと使わないのがあって、じゃあ、TabActivityで作ったタブの中で、使わない方法のタブ作りを、と思いました。
でも、なんか上手くいかなくて、調べてたら、タブの中にActivityを入れる方法が。
あ、これでTabActivityの中にTabActivity入れればいいんじゃないか、と。
サンプル。
メインのxml
ネストしたタブ
で、Activity
TabSampleActivity.java
ポイントは
tab2.setContent(new Intent(this, NestTabActivity.class));
インテントを入れること。
import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; public class TabSampleActivity extends TabActivity implements OnTabChangeListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tabHost = getTabHost(); // Tab が切り替わったときに呼ばれるコールバックを登録 tabHost.setOnTabChangedListener(this); /********** Tab その1 **********/ // TabSpec の作成 TabSpec tab1 = tabHost.newTabSpec("tag1"); // インジケーターの設定 tab1.setIndicator("tab1"); // Tab にコンテンツを設定 tab1.setContent(R.id.content1); // TabHost に Tab を追加 tabHost.addTab(tab1); /********** Tab その2 **********/ // TabSpec の作成 TabSpec tab2 = tabHost.newTabSpec("tag2"); // インジケーターの設定 tab2.setIndicator("tab2"); // Tab にActivityを設定 tab2.setContent(new Intent(this, NestTabActivity.class)); // TabHost に Tab を追加 tabHost.addTab(tab2); } @Override public void onTabChanged(String tabId) { } }
ネストするタブ
import android.app.Activity; import android.app.TabActivity; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; public class NestTabActivity extends TabActivity implements OnTabChangeListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.nesttab); TabHost tabHost = getTabHost(); // Tab が切り替わったときに呼ばれるコールバックを登録 tabHost.setOnTabChangedListener(this); /********** Tab その1 **********/ // TabSpec の作成 TabSpec tab1 = tabHost.newTabSpec("tag1"); // インジケーターの設定 tab1.setIndicator("tab1"); // Tab のコンテンツの設定 tab1.setContent(R.id.content2); // TabHost に Tab を追加 tabHost.addTab(tab1); /********** Tab その2 **********/ // TabSpec の作成 TabSpec tab2 = tabHost.newTabSpec("tag2"); // インジケーターの設定 tab2.setIndicator("tab2"); // Tab のコンテンツの設定 tab2.setContent(R.id.content3); // TabHost に Tab を追加 tabHost.addTab(tab2); } @Override public void onTabChanged(String tabId) { } }
これでオッケー。
もちろんActivityなのでAndroidManifest.xmlでActivityの指定が必要。
# だいたい最初入れ忘れて例外吐くw
AndroidManifest.xml
できたのはこんな感じ。



だいぶ素っ気ないので、レイアウトは変更しましょう。タブとか背景とか。
実際のアプリではこんな感じで使いました。
メインのタブはアイコン付き、ネストしたタブは文字だけにするとまとまりが良いかもしれません。
2011年9月6日火曜日
2011年8月22日月曜日
android Tabを必要な時だけ表示する
Tabを使ったアプリで必要な時だけタブを出す方法。
まずはタブを追加
※ 前提として、既にタブが2つ設定されている
これでタブが表示される。
次はタブの削除
追加された状態かをチェックして、他のタブにフォーカスが移ったら
TabWidgetからremoveViewすればOK。
まずはタブを追加
※ 前提として、既にタブが2つ設定されている
TabHost mTabHost = getTabHost(); TabSpec tab3 = mTabHost.newTabSpec("TAG3"); tab3.setIndicator"tab3"); tab3.setContent(R.id.content3); mTabHost.addTab(tab3);
これでタブが表示される。
次はタブの削除
@Override public void onTabChanged(String tabId) { if(mTabHost.getTabWidget().getTabCount() >= 3 && mTabHost.getCurrentTab() != 2) { Log.d("tabChanged", "remove tab"); mTabHost.getTabWidget().removeViewAt(2); } }
追加された状態かをチェックして、他のタブにフォーカスが移ったら
TabWidgetからremoveViewすればOK。
2011年8月19日金曜日
proguardの注意
一昨日、あまりに売れないから放置してたアプリでエラーが出てることを知りました。2週間放置しちゃって、買ってくれた方ごめんなさい…。
原因は難読化のproguardが悪さをして、xmlのandroid:onClickで指定したメソッドが見つからないことでした。多分、エミュレーターや実機に実行してテストしてる人が多いと思うけど、exportした時だけ発生する現象なのでご注意下さい。
回避策は
をproguard.cfgに追記する。
そうすると、対象部分は難読化されないため、xmlの指定で見つけられます。
*部分は具体的なクラス名、メソッド名でもOK。
下記を参考にしました。
http://stackoverflow.com/questions/6666292/android-onclick-events-and-pro-guard
原因は難読化のproguardが悪さをして、xmlのandroid:onClickで指定したメソッドが見つからないことでした。多分、エミュレーターや実機に実行してテストしてる人が多いと思うけど、exportした時だけ発生する現象なのでご注意下さい。
回避策は
-keepclassmembers class * extends andriod.app.Activity { public void *(android.view.View); }
をproguard.cfgに追記する。
そうすると、対象部分は難読化されないため、xmlの指定で見つけられます。
*部分は具体的なクラス名、メソッド名でもOK。
下記を参考にしました。
http://stackoverflow.com/questions/6666292/android-onclick-events-and-pro-guard
2011年8月4日木曜日
SVGをBufferedImageに変換する方法、拡大縮小する方法
ソース書きたいとこだけど、会社で使うので書けない…
ということで、参考にしたサイトを紹介。
http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/
英語だけど、開発者ならわかるはず!
拡大縮小は渡すwとhを変えればオッケー。
ほとんど画質に影響ありません。
ただ、不思議な拡大縮小で、縦横比維持で小さい方の倍率に合わせて拡大縮小して、余ったスペースは横は左、縦は下に余白になる。試したのが透過のだったから、透過領域が広がってました。
ご参考までに!
ということで、参考にしたサイトを紹介。
http://bbgen.net/blog/2011/06/java-svg-to-bufferedimage/
英語だけど、開発者ならわかるはず!
拡大縮小は渡すwとhを変えればオッケー。
ほとんど画質に影響ありません。
ただ、不思議な拡大縮小で、縦横比維持で小さい方の倍率に合わせて拡大縮小して、余ったスペースは横は左、縦は下に余白になる。試したのが透過のだったから、透過領域が広がってました。
ご参考までに!
2011年8月3日水曜日
検索に復帰
新しいアドレスが反映されました!
古いの消えてたから、反映に時間がかかる模様。
GoogleのWeb検索の追加とかもしたけど、それだけだと旧は残るだろうから。ボットの巡回周期の問題とかかな。
古いの消えてたから、反映に時間がかかる模様。
GoogleのWeb検索の追加とかもしたけど、それだけだと旧は残るだろうから。ボットの巡回周期の問題とかかな。
登録:
投稿 (Atom)