Hatena::ブログ(Diary)

peroonの日記

2012-02-10

[]背景画像の枠の、指定部分だけを伸ばしたい→9-patchがあるよ

f:id:peroon:20120210173913p:image

赤い枠の画像を背景にしようとした時、
端末の解像度によっては曲線部分がゆがんでしまう。

そこで、指定部分だけ縮小させたい。
Androidには、9-patchという機能があります。

ハマりポイントとしては、
●背景を指定したレイアウトに android:padding="0dip" を入れないと画像のみ表示される
●9-patchツール上で、左と上だけ指定するのではなく、右と下も指定する必要がある

です。

2012-02-05

[]豚丼を作った

f:id:peroon:20120205122322p:image

レシピ

おいしいものを食べると目が覚める。

[]以前作った射的ゲームを改良中

f:id:peroon:20120205221618p:image

改良と整理なう。
早く完了させて、レースゲームに取り掛かりたい。

2012-02-04

手書きの数式をLaTeXに変換してくれるWeb Equationを使ってみた

f:id:peroon:20120204193204p:image

f:id:peroon:20120204193203p:image

http://webdemo.visionobjects.com/equation.html

黄色い部分に書いた数式を認識して、
下に認識結果とLaTeXでの書き方を表示してくれるサービス。

学生の頃、スライドや論文に数式を入れるために
LaTeXの本や検索で書き方を調べて結構な時間を使っていました。

今は、書きたい数式をこのサイトでまずLaTeXに変換して、
気が向いたら文法を見るという順番が取れるので、新しい学び方ができますね。

2012-02-03

【だいちゃんOFF】クックパッドさんに遊びに行ってきました!

f:id:peroon:20120205002309p:image

ニコ生のだいちゃんのOFF会!ということでクックパッドさんに遊びに行ってきました。
会社のある白金台は落ち着いた場所でよかったです。

だいちゃんのプレゼンを聞いて、手作りの恵方巻きなどをいただきました。
冷蔵庫もいろんな種類のものがありましたw

ニコ生でプログラミングプレゼンをしている人、
放送をしている人、
アプリのモックアップを作ってきている人、
京都から来た人、
CTOをやっているエネルギッシュな人、
フリーのエンジニア、
などなど、
来ている人は特徴がありました。

勉強会などの出会いの場は、やっぱり刺激を受けますね。

2012-02-02

[]Androidアプリ 次回起動 落ちる 原因 メモリリーク

//オープンソースのzxingを使ってAndroidアプリを作っているが、
//起動して、戻るボタンで終了して、また起動するとメモリが足りなくて落ちる。
//原因は、メモリリーク。
//viewは明示的に開放してあげる必要があるようだ。
//以下は解決方法。

//XMLのトップレベルのビューがこれだったので、
//allviewというidをつけておいて、これと子を解放する。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:id="@+id/allview"
             >

//javaのコード側でこの関数をonDestroy()内で呼ぶと、
//リークしないので次回起動時に落ちなくなった
@Override
protected void onDestroy() {
    //画像解放
    cleanupView(findViewById(R.id.allview));
    super.onDestroy();
}
	
//関数定義
  /** 
   * 指定したビュー階層内のドローワブルをクリアする。 
   * (ドローワブルをのコールバックメソッドによるアクティビティのリークを防ぐため) 
   * @param view 
   */ 
  public static final void cleanupView(View view) { 
      if(view instanceof ImageButton) { 
          ImageButton ib = (ImageButton)view; 
          ib.setImageDrawable(null); 
      } else if(view instanceof ImageView) { 
          ImageView iv = (ImageView)view; 
          iv.setImageDrawable(null); 
      } else if(view instanceof SeekBar) { 
          SeekBar sb = (SeekBar)view; 
          sb.setProgressDrawable(null); 
          sb.setThumb(null); 
      // } else if(view instanceof( xxxx )) {  -- 他にもDrawable を使用するUIコンポーネントがあれば追加 
      } 
      view.setBackgroundDrawable(null); 
      if(view instanceof ViewGroup) { 
          ViewGroup vg = (ViewGroup)view; 
          int size = vg.getChildCount(); 
          for(int i = 0; i < size; i++) { 
              cleanupView(vg.getChildAt(i)); 
          } 
      } 
  } 
  
//参考
//日本Androidの会
https://groups.google.com/group/android-group-japan/msg/f385faf0ac47e291?pli=1&hl=ja