显示标签为“Android”的博文。显示所有博文
显示标签为“Android”的博文。显示所有博文

2013年3月31日星期日

[Android]メモ


  1. ant使ってclassファイルとjarファイルの合成
  2. 
    
        
        
        
            
                
                    
                
                
            
        
    
    
    zipfilesetの属性fileではなく、srcを利用するのはポイントだ。

2012年10月4日星期四

[Android]ActionProvider

おかしかった。

昨日にActionProviderはoptionItemSelectedとうまく共存できなかったのに、今日referenceを読んだ後、何もせずでうまく行った。
referenceのところでこう書いた:
A menu item selection is processed in the following order:
The default implementation does not perform any action and returns false.
つまりdispatchEventみたいに処理順番がある。昨日多分どこかで順番を間違って、ShareActionProviderの動作を上書きした。あり得ないと思うけど、こうで自分の記憶をごまかすしかない。

ちなみに、ShareActionProviderのソースを見て、1番目のonMenuItemClickを使った。

[Android]Android library project作成と使用

最新のEclipse pluginで実験してみた。
Android Projectのproperty 設定の方にisLibraryをチェックすれば、eclipseが勝手にcompileして、jarを作ってくれる。

また使用する時、root folderの直下にlibsのフォルダーを作成して、jarファイルをそこに置いて(assetに入れると、無駄にpackage sizeを増やすだけ)、jarのclassファイルがapkに一緒にcompileするから。

2012年9月4日星期二

[Android]FragmentTransactionとbackstackの関係

tabletのために開発したAndroid3.0に初めてFragmentを導入した。目的としては恐らくtabletの画面が大きいなので、Activity遷移する時、毎回全画面をrenderしなければならなくて、非効率だった。そこでFragmentを使って、Activity中の一部だけをrenderすることができる。

Android4.0から小さいなscreenでもFragmentがよく使われている。
最初に一つFragmentが作成られて、Activityの一部として表示される。入れ替わりたい時に、ActivityのFragmentManagerから新しtransactionを作って、入れ替わるの一連の動作を一つtransactionとしてcommitする。commitするまで、画面がrenderしない。

新しいFragmentを画面に表示する動作は、showじゃなくて、常にreplaceというmethodを使用している。
又replaceされたFragmentは現在表示している画面だ、一旦replaceされたら、Fragmentがdetachになる。前のFragmentの状態をそのまま保持したい場合、addToBackStackで新しいFragmentを追加してから、replaceする。しかし、addToBackStackでreplaceした後、更に新しいFragmentをreplaceする場合、popBackStackを使わないと、Stackの一番TopのFragmentだけが入れ替わられる。

2012年8月18日星期六

[ListView]onItemClick event無効の問題

複数種類のViewを含むcustomizeのitemを持つ ListView がよく使われますが、不注意するとitemのclick eventを監視するOnItemClickListenerが無反応になります。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp" >

    <ImageView
        android:id="@+id/btn_star"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:contentDescription="@string/description_star"
        android:src="@android:drawable/btn_star" />

    <TextView
        android:id="@+id/text_name"
        android:inputType="textMultiLine"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@id/btn_share" />

</RelativeLayout>


上記のXML中に問題になったのはTextViewのandroid:inputType="textMultiLine" 。これでClickする時に、FocusをTextViewに奪われる、Item全体のClickEventが無効になってしまう。Touch Eventが全部旨くdispatchされましたが、どうやらlistenerが呼ばれなかった。