木雨音乐 项目开发(七)我的收藏界面

我的收藏界面

木雨音乐 APP已在百度手机助手上架,有兴趣的朋友可以下载测试,下载地址:http://shouji.baidu.com/software/9785031.html
木雨音乐源码下载地址:http://download.csdn.net/detail/haoxue641/9610782
希望大家多提宝贵意见

我的收藏界面MyLikeMusicListActivity,点击左上角菜单键的“我喜欢”进入我的收藏界面,在主界面菜单、音乐播放界面菜单、最近播放菜单中可点击进入

在MainActivity.java(主界面类)中添加一下代码(前面介绍时已添加)点击菜单项跳转相应的Activity,其他界面跳转不再重复
//菜单项
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        Intent intent;
        switch (item.getItemId()) {
            case R.id.newMyMusic:
                myMusicListFragment.loadData();//初始化数据
                MyMusicListFragment.newInstance();//重新实例化一下本地音乐Fragment,加载新的数据
                break;
            case R.id.ilike:
                intent = new Intent(this, MyLikeMusicListActivity.class);
                startActivity(intent);
                break;
            case R.id.near_play:
                intent = new Intent(this, PlayRecordListActivity.class);
                startActivity(intent);
                break;
            case R.id.about:
                intent = new Intent(this, AboutActivity.class);
                startActivity(intent);
                break;
            case R.id.exit:
                stopService(new Intent(this, PlayService.class));
                exit();
                break;
        }
        return true;
    }

实现功能:

1、点击播放我喜欢音乐列表
2、长按取消收藏
3、菜单项跳转最近播放界面,清空收藏列表
MyLikeMusicListActivity.java代码如下
package com.haoxue.zixueplayer;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.haoxue.zixueplayer.adapter.MyMusicListAdapter;
import com.haoxue.zixueplayer.vo.Mp3Info;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.exception.DbException;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/7/30.
 */
public class MyLikeMusicListActivity extends BaseActivity implements AdapterView.OnItemClickListener{

    private ListView listView_like;
    private TextView textView1_no_data;
    private MuyuPlayerApp app;
    private MyMusicListAdapter myMusicListAdapter;
    private Mp3Info mp3Info;
    private ArrayList<Mp3Info> likeMp3Infos;
    private MyMusicListAdapter adapter;
    private boolean isChange = false;//表示当前播放列表是否为收藏列表

    List<Mp3Info> list;

    private Drawable oldBackground = null;
    private int currentColor = 0x98000000;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app = (MuyuPlayerApp) getApplication();
        setContentView(R.layout.activity_like_music_list);
        listView_like = (ListView) findViewById(R.id.listView_like);
        textView1_no_data = (TextView) findViewById(R.id.textView1_no_data);
        listView_like.setOnItemClickListener(this);
        registerForContextMenu(listView_like);

        changeColor(currentColor);
        initData();
        listView_like.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
//                showLikeDeleteDialog(position);
                AlertDialog.Builder builder = new AlertDialog.Builder(MyLikeMusicListActivity.this);
                final String[] items = {"取消收藏"};
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        mp3Info=likeMp3Infos.get(position);
                        try {
                            System.out.println(mp3Info);
                            System.out.println(mp3Info.getIsLike());
                            mp3Info.setIsLike(0);
                            app.dbUtils.update(mp3Info, "isLike");
                            System.out.println(mp3Info.getIsLike());
                            System.out.println(mp3Info);
                            initData();
                            Toast.makeText(MyLikeMusicListActivity.this, "已取消收藏", Toast.LENGTH_SHORT).show();
                        } catch (DbException e) {
                            e.printStackTrace();
                        }
                    }
                });
                builder.show();
                return true;
            }
        });
    }


    @Override
    public void onResume() {
        super.onResume();
        //绑定播放服务
        bindPlayService();
    }

    @Override
    public void onPause() {
        super.onPause();
        //解除绑定播放服务
        unbindPlayService();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unbindPlayService();//解绑服务
    }

    private void initData() {
        try {
            list = app.dbUtils.findAll(Selector.from(Mp3Info.class).where("isLike", "=", "1"));
            if (list == null || list.size() == 0) {
                textView1_no_data.setVisibility(View.VISIBLE);
                listView_like.setVisibility(View.GONE);
            } else {
                textView1_no_data.setVisibility(View.GONE);
                listView_like.setVisibility(View.VISIBLE);
                likeMp3Infos = (ArrayList<Mp3Info>) list;
                adapter = new MyMusicListAdapter(this, likeMp3Infos);
                listView_like.setAdapter(adapter);
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    private void deleteData(){
        //查询收藏的记录
        try {
            list = app.dbUtils.findAll(Selector.from(Mp3Info.class).where("isLike", "=", "1"));
            for (int i = 0; i <list.size() ; i++) {
                mp3Info=list.get(i);
                mp3Info.setIsLike(0);
                app.dbUtils.update(mp3Info, "isLike");
            }
            initData();
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void publish(int progress) {

    }

    @Override
    public void change(int position) {

    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if (playService.getChangePlayList() != PlayService.LIKE_MUSIC_LIST) {
            playService.setMp3Infos(likeMp3Infos);
            playService.setChangePlayList(PlayService.LIKE_MUSIC_LIST);
        }
        playService.play(position);
        Mp3Info likeMp3Info = likeMp3Infos.get(position);//查出歌曲
        System.out.println("收藏列表 : " + likeMp3Info);
        //保存播放时间
        savePlayRecord();
    }

    //保存播放记录
    private void savePlayRecord() {
        //获取当前正在播放的音乐对象
        Mp3Info mp3Info = playService.getMp3Infos().get(playService.getCurrentPosition());
        try {
            Mp3Info playRecordMp3Info = app.dbUtils.findFirst(Selector.from(Mp3Info.class).where("mp3InfoId", "=", mp3Info.getMp3InfoId()));
            if (playRecordMp3Info == null) {
                mp3Info.setPlayTime(System.currentTimeMillis());//设置当前播放时间
                app.dbUtils.save(mp3Info);
            } else {
                playRecordMp3Info.setPlayTime(System.currentTimeMillis());
                app.dbUtils.update(playRecordMp3Info, "playTime");
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
    private void changeColor(int newColor) {


        // change ActionBar color just if an ActionBar is available
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

            Drawable colorDrawable = new ColorDrawable(newColor);
            Drawable bottomDrawable = getResources().getDrawable(R.drawable.actionbar_bottom);
            LayerDrawable ld = new LayerDrawable(new Drawable[]{colorDrawable, bottomDrawable});

            if (oldBackground == null) {
                getActionBar().setBackgroundDrawable(ld);

            } else {
                TransitionDrawable td = new TransitionDrawable(new Drawable[]{oldBackground, ld});
                getActionBar().setBackgroundDrawable(td);
                td.startTransition(200);

            }

            oldBackground = ld;

            getActionBar().setDisplayShowTitleEnabled(false);
            getActionBar().setDisplayShowTitleEnabled(true);

        }


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.like_menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        Intent intent;
        switch (item.getItemId()) {
            case R.id.near_play_Play:
                intent = new Intent(this, PlayRecordListActivity.class);
                startActivity(intent);
                finish();
                break;
            case R.id.delete_list:
                deleteData();
                break;
        }
        return true;
    }


}
activity_like_music_list.xml代码如下
<?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="match_parent">


    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView_like"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/textView" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="47dp"
        android:gravity="center"
        android:text="@string/likes_music"
        android:textSize="15sp"
        android:textColor="@android:color/white"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="#4d4b4646" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_data2"
        android:textSize="30sp"
        android:textColor="@android:color/white"
        android:id="@+id/textView1_no_data"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />


</RelativeLayout>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值