音樂播放器小程式終于殺青了。
已完成的基本功能:
1.以service形式播放音樂,控制進退,切換音樂,歌詞滾動顯示。
2.搜尋檔案系統上音樂檔案,添加到播放清單
3.從播放清單裡移除音樂檔案。
欠缺之處:
歌曲檔案名是中文名還會報錯,有待進一步研究。
隻支援lrc歌詞格式,krc歌詞可以轉成lrc,這個有待後續完善,歌詞檔案名必須與歌曲檔案一緻
遇到的問題:
1.checkBox在listview的狀态:
下拉隐藏該checkbox後,選中狀态變化了,用onCheckedChangedListener和onClickListener效果不一樣:前者選中後,隐藏再顯示,狀态變化了。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
// convertView為null的時候初始化convertView。
if (convertView == null) {
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.fileitem, null);
holder.file = (TextView) convertView.findViewById(R.id.file);
holder.selected = (CheckBox) convertView
.findViewById(R.id.selected);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.file.setText(list.get(position).get("file").toString());
System.out.println(((Boolean) list.get(position).get("selected"))
.booleanValue());
holder.selected.setChecked(((Boolean) list.get(position).get(
"selected")).booleanValue());
holder.selected.setVisibility(View.VISIBLE);
final int p = position;
// holder.selected
// .setOnCheckedChangeListener(new OnCheckedChangeListener() {
//
// @Override
// public void onCheckedChanged(CompoundButton buttonView,
// boolean isChecked) {
// System.out.println("check:" + isChecked + ":"
// + list.get(p).get("file").toString());
// list.get(p).put("selected", isChecked);
// // holder.selected.setChecked(isChecked);
// notifyDataSetChanged();
// }
//
// });
holder.selected.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
boolean st = ((Boolean)(list.get(p).get("selected"))).booleanValue();
if(st){
list.get(p).put("selected", false);
}else{
list.get(p).put("selected", true);
}
}
});
return convertView;
}
2. startActivityFor(intent,requestcode)和setResult(resultcode,intent)
兩者對應出現。resultcode可以自定義以區分是哪個元件傳回的
3.android:layout_weight這個屬性比較難了解,另作讨論。
轉載于:https://www.cnblogs.com/andyLau2/archive/2011/10/22/2220928.html