package me.wcy.music.activity; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import me.wcy.music.R; public class online extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_online); WebView webView=(WebView)findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("file:///android_asset/onlink.html"); } }
package me.wcy.music.activity; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import java.io.File; import java.util.ArrayList; import java.util.List; import me.wcy.music.R; import me.wcy.music.adapter.OnMoreClickListener; import me.wcy.music.adapter.OnlineMusicAdapter; import me.wcy.music.constants.Extras; import me.wcy.music.enums.LoadStateEnum; import me.wcy.music.executor.DownloadOnlineMusic; import me.wcy.music.executor.PlayOnlineMusic; import me.wcy.music.executor.ShareOnlineMusic; import me.wcy.music.http.HttpCallback; import me.wcy.music.http.HttpClient; import me.wcy.music.model.Music; import me.wcy.music.model.OnlineMusic; import me.wcy.music.model.OnlineMusicList; import me.wcy.music.model.SheetInfo; import me.wcy.music.service.AudioPlayer; import me.wcy.music.utils.FileUtils; import me.wcy.music.utils.ImageUtils; import me.wcy.music.utils.ScreenUtils; import me.wcy.music.utils.ToastUtils; import me.wcy.music.utils.ViewUtils; import me.wcy.music.utils.binding.Bind; import me.wcy.music.widget.AutoLoadListView; public class OnlineMusicActivity extends BaseActivity implements OnItemClickListener , OnMoreClickListener, AutoLoadListView.OnLoadListener { private static final int MUSIC_LIST_SIZE = 20; @Bind(R.id.lv_online_music_list) private AutoLoadListView lvOnlineMusic; @Bind(R.id.ll_loading) private LinearLayout llLoading; @Bind(R.id.ll_load_fail) private LinearLayout llLoadFail; private View vHeader; private SheetInfo mListInfo; private OnlineMusicList mOnlineMusicList; private List<OnlineMusic> mMusicList = new ArrayList<>(); private OnlineMusicAdapter mAdapter = new OnlineMusicAdapter(mMusicList); private int mOffset = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_online_music); } @Override protected void onServiceBound() { mListInfo = (SheetInfo) getIntent().getSerializableExtra(Extras.MUSIC_LIST_TYPE); setTitle(mListInfo.getTitle()); initView(); onLoad(); } private void initView() { vHeader = LayoutInflater.from(this).inflate(R.layout.activity_online_music_list_header, null); AbsListView.LayoutParams params = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ScreenUtils.dp2px(150)); vHeader.setLayoutParams(params); lvOnlineMusic.addHeaderView(vHeader, null, false); lvOnlineMusic.setAdapter(mAdapter); lvOnlineMusic.setOnLoadListener(this); ViewUtils.changeViewState(lvOnlineMusic, llLoading, llLoadFail, LoadStateEnum.LOADING); lvOnlineMusic.setOnItemClickListener(this); mAdapter.setOnMoreClickListener(this); } private void getMusic(final int offset) { HttpClient.getSongListInfo(mListInfo.getType(), MUSIC_LIST_SIZE, offset, new HttpCallback<OnlineMusicList>() { @Override public void onSuccess(OnlineMusicList response) { lvOnlineMusic.onLoadComplete(); mOnlineMusicList = response; if (offset == 0 && response == null) { ViewUtils.changeViewState(lvOnlineMusic, llLoading, llLoadFail, LoadStateEnum.LOAD_FAIL); return; } else if (offset == 0) { initHeader(); ViewUtils.changeViewState(lvOnlineMusic, llLoading, llLoadFail, LoadStateEnum.LOAD_SUCCESS); } if (response == null || response.getSong_list() == null || response.getSong_list().size() == 0) { lvOnlineMusic.setEnable(false); return; } mOffset += MUSIC_LIST_SIZE; mMusicList.addAll(response.getSong_list()); mAdapter.notifyDataSetChanged(); } @Override public void onFail(Exception e) { lvOnlineMusic.onLoadComplete(); if (e instanceof RuntimeException) { // 歌曲全部加载完成 lvOnlineMusic.setEnable(false); return; } if (offset == 0) { ViewUtils.changeViewState(lvOnlineMusic, llLoading, llLoadFail, LoadStateEnum.LOAD_FAIL); } else { ToastUtils.show(R.string.load_fail); } } }); } @Override public void onLoad() { getMusic(mOffset); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { play((OnlineMusic) parent.getAdapter().getItem(position)); } @Override public void onMoreClick(int position) { final OnlineMusic onlineMusic = mMusicList.get(position); AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle(mMusicList.get(position).getTitle()); String path = FileUtils.getMusicDir() + FileUtils.getMp3FileName(onlineMusic.getArtist_name(), onlineMusic.getTitle()); File file = new File(path); int itemsId = file.exists() ? R.array.online_music_dialog_without_download : R.array.online_music_dialog; dialog.setItems(itemsId, (dialog1, which) -> { switch (which) { case 0:// 分享 share(onlineMusic); break; case 1:// 查看歌手信息 artistInfo(onlineMusic); break; case 2:// 下载 download(onlineMusic); break; } }); dialog.show(); } private void initHeader() { final ImageView ivHeaderBg = vHeader.findViewById(R.id.iv_header_bg); final ImageView ivCover = vHeader.findViewById(R.id.iv_cover); TextView tvTitle = vHeader.findViewById(R.id.tv_title); TextView tvUpdateDate = vHeader.findViewById(R.id.tv_update_date); TextView tvComment = vHeader.findViewById(R.id.tv_comment); tvTitle.setText(mOnlineMusicList.getBillboard().getName()); tvUpdateDate.setText(getString(R.string.recent_update, mOnlineMusicList.getBillboard().getUpdate_date())); tvComment.setText(mOnlineMusicList.getBillboard().getComment()); Glide.with(this) .load(mOnlineMusicList.getBillboard().getPic_s640()) .asBitmap() .placeholder(R.drawable.default_cover) .error(R.drawable.default_cover) .override(200, 200) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { ivCover.setImageBitmap(resource); ivHeaderBg.setImageBitmap(ImageUtils.blur(resource)); } }); } private void play(OnlineMusic onlineMusic) { new PlayOnlineMusic(this, onlineMusic) { @Override public void onPrepare() { showProgress(); } @Override public void onExecuteSuccess(Music music) { cancelProgress(); AudioPlayer.get().addAndPlay(music); ToastUtils.show("已添加到播放列表"); } @Override public void onExecuteFail(Exception e) { cancelProgress(); ToastUtils.show(R.string.unable_to_play); } }.execute(); } private void share(final OnlineMusic onlineMusic) { new ShareOnlineMusic(this, onlineMusic.getTitle(), onlineMusic.getSong_id()) { @Override public void onPrepare() { showProgress(); } @Override public void onExecuteSuccess(Void aVoid) { cancelProgress(); } @Override public void onExecuteFail(Exception e) { cancelProgress(); } }.execute(); } private void artistInfo(OnlineMusic onlineMusic) { ArtistInfoActivity.start(this, onlineMusic.getTing_uid()); } private void download(final OnlineMusic onlineMusic) { new DownloadOnlineMusic(this, onlineMusic) { @Override public void onPrepare() { showProgress(); } @Override public void onExecuteSuccess(Void aVoid) { cancelProgress(); ToastUtils.show(getString(R.string.now_download, onlineMusic.getTitle())); } @Override public void onExecuteFail(Exception e) { cancelProgress(); ToastUtils.show(R.string.unable_to_download); } }.execute(); } }