贴上。
1, android的入门开发,基本笔记就在另一处,不在这重复了。
2, 重新又看了java基本语法,都有一年没接触面向对象编程了。
3,
MTK项目中。
移植blog central主要涉及UI方面的修改,因为目标平台的UI架构与源平台的架构不一样。
动态列表界面实现,增删改blog central account的实现,option菜单的资源问题的解决。
4,
使用开关控制代码,这种跟C中宏开关控制的目的一致:
Config.xml (droid\frameworks\base\core\res\res\values)是制定全局的开关控制文件,也能说是默认开关控制。
Config.xml (droid\vendor\cellon\vendor_overlay\【项目名】\frameworks\base\core\res\res\values)是对应项目的开关控制文件。
1)找到在config.xml中定义的字段。
<!-- Make the phone silent when you choose silent for ringtone -->
<bool name="silent_is_choosed_ringtone">false</bool>
定义了字段的名字以及标示开闭与否的boolean值。
2)代码中,
boolean silentIsChoosed = context.getResources().getBoolean(
com.android.internal.R.bool.silent_is_choosed_ringtone);
context是个Context的structure,该值一般通过getContext()获取。
以上即可取得silent_is_choosed_ringtone的值。然后再代码中通过if判断确定该开关控制下的代码执行。
5,
可以将界面上的widget绑定到对应的preference,然后在widget上面的数据有更新时自动更新preference文件。
诸如以下界面
1) 设定xml文件
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/set_alarm">
<CheckBoxPreference android:key="enabled"
android:persistent="false"
android:title="@string/enable_alarm" />
<Preference android:key="time"
android:persistent="false"
android:title="@string/time"/>
<com.android.deskclock.RepeatPreference
android:persistent="false"
android:key="setRepeat"
android:title="@string/alarm_repeat" />
<com.android.deskclock.AlarmPreference
android:key="alarm"
android:title="@string/alert"
android:ringtoneType="alarm"
android:persistent="false"
android:showDefault="false"
android:showSilent="true" />
<CheckBoxPreference android:key="vibrate"
android:persistent="false"
android:title="@string/alarm_vibrate"/>
<EditTextPreference android:key="label"
android:persistent="false"
android:title="@string/label"
android:dialogTitle="@string/label" />
</PreferenceScreen>
2) 通过addPreferencesFromResource(R.xml.alarm_prefs);取得对应界面的preference。
3) 对于不同widget,创建不同widget对应的preference。
例如对于EditText这个widget,创建private EditTextPreference mLabel;
4)
通过findPreference获取 对应preference。
mLabel = (EditTextPreference) findPreference("label");
5)
重载实现OnPreferenceChangeListener函数。
mLabel.setOnPreferenceChangeListener(
new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference p,
Object newValue) {
String val = (String) newValue;
// Set the summary based on the new label.
p.setSummary(val);
if (val != null && !val.equals(mLabel.getText())) {
// Call through to the generic listener.
return SetAlarm.this.onPreferenceChange(p,
newValue);
}
return true;
}
});