天天看點

android簡單的音樂播放器 殺青

  音樂播放器小程式終于殺青了。

  已完成的基本功能:

   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