編輯:關於Android編程
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.apis">
<activity android:name="ApiDemos">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".app.HelloWorld" android:label="@string/activity_hello_world">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
activity組件的android:name屬性采用類名的簡寫方式,查看文檔類名的簡寫格式為“.ClassName”,但為什麼<activity android:name="ApiDemos">裡的android:anem="ApiDemos",而不是android:anem=".ApiDemos"呢? 而後面的所有Activity組件的android:name的值都是“.ClassName”格式呢?馬上google查詢android:name屬性值的說明,但未查到有類名前不加“.”的說明!
無奈,那就實際測試驗證吧,結果"ApiDemos"與".ApiDemos"的寫法都能正確運行程序。難道類名前有“.”與沒有“.”是一樣的? 明明文檔中說明的是“.ClassName”格式啊!於是把其它的Activity的android:name的值字符串中的第一個“.”去掉,再運行程序,卻不行,越發的感覺奇怪!郁悶!經過反復的測試,發現了一個規則:
如果manifest中指定了package屬性,比如指定為"com.android.sample",如果activity的實現類也在這個package下,則android:name為實現的類名,這個類名前加不加點都沒有關系,如果activity的實現類是在默認包的子包裡面,則這個“.”是必須有的,比如activity的實現是com.android.sample.app.DialogActivity,則android:name必須寫成.app.DialogActivity或者com.android.sample.app.DialogActivity。如果只寫app.DialogActivity,則會報錯。
呵呵,感覺Android的這個設計有點失敗,統一格式,強制簡寫方式必須有“.”不就得了嗎,免得讓人暈乎!官方的例子裡居然還特意這樣設計,難道這有特殊的用意?
管它呢!不論Activity的子類是否在默認package下,還是在默認包的子包下,類名的簡寫方式統統采用“.ClassName”的方式!
smalidea smalidea是一個IntelliJ IDEA/Android Studio smali語言插件,可實現動態調試smali代碼。 github地址
從2012年自學Android開始,到現在第4個年頭了,期間一直沒接觸正規的Android項目,加上這幾年一直忙.NET項目,導致去年有兩單Android的私活沒底氣接,
1.下拉列表Spinner 1.1.activity_main.xml Spinner是下拉列表的
要適配不同的屏幕,首要需要的是要能夠將不同的屏幕分辨出來,android提供了若干不同的維度來進行限定(qualifier,有的翻譯為限定詞)上圖所示為常用的一些維度,不