zoukankan      html  css  js  c++  java
  • 今日总结

    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();
        }
    }
  • 相关阅读:
    snmp实用篇
    使用snmp4j实现Snmp功能(三)
    使用snmp4j实现Snmp功能(二)
    使用snmp4j实现Snmp功能(一)
    “百度杯”CTF比赛 九月场_Test(海洋cms前台getshell)
    “百度杯”CTF比赛 九月场_123(文件备份,爆破,上传)
    “百度杯”CTF比赛 九月场_SQLi
    “百度杯”CTF比赛 九月场_SQL
    “百度杯”CTF比赛 九月场_再见CMS(齐博cms)
    “百度杯”CTF比赛 九月场_YeserCMS
  • 原文地址:https://www.cnblogs.com/feng747/p/14910493.html
Copyright © 2011-2022 走看看