1,音乐播放器
需求:很简单能播放音乐 ,下一首上一首。就完事。还有个翻页 按类型查找。
2,电影播放器:能够播放电影,快进,后退。这里直接用的 框架。
由于比较简单,就全部写在一个页面了。判断数据类型。显示不同的页面。

下面是代码;

import android.media.MediaPlayer;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RelativeLayout;import android.widget.SeekBar;import android.widget.TextView;import android.widget.Toast;import com.bumptech.glide.Glide;import com.chad.library.adapter.base.BaseQuickAdapter;import com.lzy.okgo.OkGo;import com.lzy.okgo.callback.StringCallback;import com.lzy.okgo.model.Response;import java.io.IOException;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;import cn.jzvd.JZVideoPlayer;import cn.jzvd.JZVideoPlayerStandard;import spa.nabo.com.nabospa.R;import spa.nabo.com.nabospa.adapter.DianshiJvAdapter;import spa.nabo.com.nabospa.adapter.MovieTypeAdapter;import spa.nabo.com.nabospa.adapter.MoviesAdapter;import spa.nabo.com.nabospa.adapter.MusicAdapter;import spa.nabo.com.nabospa.adapter.MusicTypeAdapter;import spa.nabo.com.nabospa.base.BaseActivity;import spa.nabo.com.nabospa.bean.MusicBean;import spa.nabo.com.nabospa.bean.MusicTypeBean;import spa.nabo.com.nabospa.bean.VideosBeans;import spa.nabo.com.nabospa.bean.VideosTypeBean;import spa.nabo.com.nabospa.config.Config;import spa.nabo.com.nabospa.config.URL;import spa.nabo.com.nabospa.utils.GsonUtils;import static spa.nabo.com.nabospa.config.URL.getVideos;/** * Created by ${陈文杰} on 2018/4/2 0002. * Email:1181620038@qq.com * 描述:电影 */public class MoviesActivity extends BaseActivity implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, Runnable, View.OnClickListener {    @BindView(R.id.back_ll)    LinearLayout backLl;    @BindView(R.id.movie_type_rl)    RecyclerView movieTypeRl;    @BindView(R.id.zuixin_tv)    TextView zuixinTv;    @BindView(R.id.zuire_tv)    TextView zuireTv;    @BindView(R.id.haoping_tv)    TextView haopingTv;    @BindView(R.id.title)    spa.nabo.com.nabospa.view.title title;    @BindView(R.id.movie_rv)    RecyclerView movieRv;    @BindView(R.id.movie_ll)    LinearLayout movieLl; // 默认显示页面    @BindView(R.id.movie_xiangqing_ll)    RelativeLayout movieXiangqingLl;//详情页面    @BindView(R.id.left_iv)    ImageView leftIv;    @BindView(R.id.yeshu)    TextView yeshu;    @BindView(R.id.right_iv)    ImageView rightIv;    @BindView(R.id.xq_movie_iv)    ImageView xqMovieIv;    @BindView(R.id.xq_movie_name_tv)    TextView xqMovieNameTv;//名称    @BindView(R.id.xq_movie_zhuyan_tv)    TextView xqMovieZhuyanTv;//主演    @BindView(R.id.xq_movie_daoyan_tv)    TextView xqMovieDaoyanTv;//导演    @BindView(R.id.xq_movie_type_tv)    TextView xqMovieTypeTv;//电影类型    @BindView(R.id.xq_movie_addr_tv)    TextView xqMovieAddrTv;//地址    @BindView(R.id.xq_movie_paleyNum_tv)    TextView xqMoviePaleyNumTv;//播放次数    @BindView(R.id.xq_movie_jishu_rc)    RecyclerView xqMovieJishuRc;//每一集    @BindView(R.id.xq_movie_jianjie_tv)    TextView xqMovieJianjieTv;// 介绍    @BindView(R.id.hei_ll)    LinearLayout heiLl; //电影和音乐,不同的高度    @BindView(R.id.fanye_ll)    LinearLayout fanyeLl;//f翻页按钮    /*音乐控件*/    @BindView(R.id.music_play_img)    ImageView musicPlayImg; //当前播放的音乐图片    @BindView(R.id.music_play_shang)    ImageView musicPlayShang;//上一首    @BindView(R.id.music_play_stop)    ImageView musicPlayStop;//播放/暂停    @BindView(R.id.music_play_next)    ImageView musicPlayNext;//下一首    @BindView(R.id.music_info_tv)    TextView musicInfoTv;//歌曲名字-歌手    @BindView(R.id.music_play_volume1_sb)    SeekBar musicPlayVolume1Sb;//音量的控制    @BindView(R.id.music_play_sb)    SeekBar musicPlaySb;//进度条的控制    @BindView(R.id.music_play_time_tv)    TextView musicPlayTimeTv;//播放时间    @BindView(R.id.music_play_times_tv)    TextView musicPlayTimesTv;//总时长    @BindView(R.id.play_music_ll)    LinearLayout playMusicLl;//进入音乐就显示这个。电影就隐藏    private List listVideoType;//电影类型    private MovieTypeAdapter typeAdapter;//类型  适配器    private MoviesAdapter moviesAdapter;//电影适配器    private VideosBeans.MsgBodyBean.ListBean.VideosAllBean videoPaths;//电影播放路径。    private List listVideoJishu;//电影播放路径。    private List listVideos;//电影信息    public static int pageNo = 1;//电影页数    public static int typeID;//电影类型ID    private DianshiJvAdapter mJiShuAdapter;//电视剧 集数 适配器。    private int movieOrMusicType = 1;//默认 进来是电影,1      音乐是0    private List mMusicTypes;// 音乐类型    private List mSongs;//每个类型下面的音乐    private MusicAdapter musicAdapter;//音乐    private MusicTypeAdapter musicTypeAdapter;//音乐    private int songPageNo = 1;//音乐。    private int currIndexMusic = 0;// 表示当前播放的音乐索引    private boolean flagMusic = true;//控制进度条线程标记    // 定义当前播放器的状态״̬    private static final int IDLE = 0;    private static final int PAUSE = 1;    private static final int START = 2;    private static final int CURR_TIME_VALUE = 1;    private int currStateMusic = IDLE; // 当前播放器的状态    //定义线程池(同时只能有一个线程运行)    ExecutorService esaa = Executors.newSingleThreadExecutor();    private MediaPlayer mp;//音乐    JZVideoPlayerStandard jzVideoPlayerStandard;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_movie);        ButterKnife.bind(this);        movieOrMusicType = getIntent().getIntExtra("mmid", 1);        //        if (movieOrMusicType == 0) {//音乐            getAllMusic();            initViewMusic();        } else {//电影            getAllVideos();            initViewMovie();        }    }    //初始化电影    private void initViewMovie() {        jzVideoPlayerStandard = findViewById(R.id.videoplayer);        LinearLayoutManager gridLayoutManager = new LinearLayoutManager(this);        movieTypeRl.setLayoutManager(gridLayoutManager);        //具体 电影        GridLayoutManager gridLayoutManagers = new GridLayoutManager(MoviesActivity.this, 6);        movieRv.setLayoutManager(gridLayoutManagers);        //        playMusicLl.setVisibility(View.GONE);    }    /**     *  电视剧适配器。、     */    public void initDianshiJv(final List videoPath, final String path){        GridLayoutManager gridLayoutManagers = new GridLayoutManager(MoviesActivity.this, 7);        xqMovieJishuRc.setVisibility(View.VISIBLE);        xqMovieJishuRc.setLayoutManager(gridLayoutManagers);        mJiShuAdapter =new DianshiJvAdapter(videoPath,MoviesActivity.this);        xqMovieJishuRc.setAdapter(mJiShuAdapter);    }    /**     * 电影播放前。     */     public void initMovePlay(String path,String name,String img){         jzVideoPlayerStandard.setVisibility(View.VISIBLE);         jzVideoPlayerStandard.setUp(path,JZVideoPlayerStandard.SCREEN_WINDOW_NORMAL, name);         Glide.with(MoviesActivity.this)                 .load(img)                 .into(jzVideoPlayerStandard.thumbImageView);        }    @OnClick({R.id.back_ll, R.id.zuixin_tv, R.id.zuire_tv, R.id.haoping_tv, R.id.left_iv, R.id.right_iv, R.id.music_play_shang, R.id.music_play_stop, R.id.music_play_next})    public void onViewClicked(View view) {        switch (view.getId()) {            case R.id.back_ll:                if (movieXiangqingLl.getVisibility() == View.VISIBLE) {//不是显示的。 t                    movieXiangqingLl.setVisibility(View.GONE);                    movieLl.setVisibility(View.VISIBLE);                } else {//显示的话。                    finish();                }                break;            case R.id.zuixin_tv:                break;            case R.id.zuire_tv:                break;            case R.id.haoping_tv:                break;            case R.id.left_iv:                if (pageNo == 1) {                } else {                    pageNo--;                    getVideos(listVideoType.get(typeID).getId(), pageNo);                }                yeshu.setText(pageNo + "");                break;            case R.id.right_iv:                if (listVideos.size() == 0) {                    Toast.makeText(this, "没有更多数据!", Toast.LENGTH_SHORT).show();                } else {                    pageNo++;                    getVideos(listVideoType.get(typeID).getId(), pageNo);                    yeshu.setText(pageNo + "");                }                break;//            case R.id.xq_play_tv: //立即播放按钮//                break;            case R.id.music_play_shang://上一首                previous();                break;            case R.id.music_play_stop://暂停播放                play();                break;            case R.id.music_play_next://下一首                next();                break;        }    }    /**     * 获取电影类型     */    public void getAllVideos() {        OkGo.get(URL.getAllVideos)                .tag(this)                .execute(new StringCallback() {                    @Override                    public void onSuccess(Response listType) {                        VideosTypeBean vyb = GsonUtils.GsonToBean(listType.body(), VideosTypeBean.class);                        listVideoType = vyb.getMsgBody();                        Log.e("路径--", listType.body() + URL.getAllVideos);                        Config.sVideoTypeBean = vyb;                        typeAdapter = new MovieTypeAdapter(listVideoType, MoviesActivity.this);                        movieTypeRl.setAdapter(typeAdapter);                        getVideos(listVideoType.get(0).getId(), pageNo);//默认查询第一个                        //类型                        typeAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {                            @Override                            public void onItemClick(BaseQuickAdapter adapter, View view, final int position) {                                pageNo = 1;                                typeID = position;                                getVideos(listVideoType.get(position).getId(), pageNo);                                yeshu.setText(pageNo + "");                                //点击事件                            }                        });                    }                });    }    /**     * 获取类型下面的所有电影     * @param typeID 类型iD     * @param pageNo 页数     */    public void getVideos(int typeID, int pageNo) {        Log.e("路径--类型下所有电影", getVideos + typeID + "&pageNo=" + pageNo + "&pageSize=" + 12);        OkGo.get(getVideos + typeID + "&pageNo=" + pageNo + "&pageSize=" + 12)                .tag(this)                .execute(new StringCallback() {                    @Override                    public void onSuccess(Response response) {                          VideosBeans videosBean = GsonUtils.GsonToBean(response.body(), VideosBeans.class);                            listVideos=videosBean.getMsgBody().getList();                        if (listVideos.size() != 0) {                            moviesAdapter = new MoviesAdapter(listVideos, MoviesActivity.this);                            movieRv.setAdapter(moviesAdapter);                            //查询类型下面的                            moviesAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {                                @Override                                public void onItemClick(BaseQuickAdapter adapter, View view, int position) {                                    //点击进入详情页                                    movieXiangqingLl.setVisibility(View.VISIBLE);                                     movieLl.setVisibility(View.GONE);                                    //设置详情页的数据。                                    setXiangQing(listVideos.get(position).getVoidprogramimg(),                                            listVideos.get(position).getVoidprogramname(),                                            listVideos.get(position).getVoidprogramdirector(),                                            listVideos.get(position).getVoidprogramstarring(),                                            listVideos.get(position).getFilmtype(),                                            listVideos.get(position).getArea(),                                            "242323",                                            listVideos.get(position).getVoidprogramdescription());                                    //播放路径。                                    listVideoJishu =listVideos.get(position).getVideos();                                    Log.e("o电视剧下面每一部 ",listVideoJishu.size()+"" );                                    //查找是否是连续剧                                        int types =listVideos.get(position).getTypes();//1 。                                        if (types==0){//电视剧                                            initDianshiJv(listVideoJishu,listVideoJishu.get(position).getVoidpath());                                            initMovePlay(listVideoJishu.get(position).getVoidpath(),                                                    listVideos.get(position).getVoidprogramname(),                                                    listVideos.get(position).getVoidprogramimg()                                            );                                            final String imgpath=  listVideos.get(position).getVoidprogramimg();                                            mJiShuAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {                                                @Override                                                public void onItemClick(BaseQuickAdapter adapter, View view, int position) {                                                    //取出播放链接。跳转到播放页面                                                    initMovePlay(listVideoJishu.get(position).getVoidpath(),                                                            listVideoJishu.get(position).getVoidname(),                                                                    imgpath                                                    );                                                }                                            });                                           }else{//电影                                            xqMovieJishuRc.setVisibility(View.GONE);                                            String path=listVideoJishu.get(0).getVoidpath();                                            initMovePlay(path,listVideos.get(position).getVoidprogramname(),                                                    listVideos.get(position).getVoidprogramimg()                                                    );                                     }                                }                            });                        } else {                            Toast.makeText(MoviesActivity.this, "没有更多数据", Toast.LENGTH_SHORT).show();                        }                    }                });    }    /**     * 设置详情     *     * @param name     * @param zhuyan     * @param daoyan     * @param type     * @param addr     * @param Num     * @param jianjie     */    public void setXiangQing(String path, String name, String zhuyan, String daoyan, String type, String addr, String Num, String jianjie) {        Glide.with(MoviesActivity.this)                .load(path)                .into(xqMovieIv);        xqMovieNameTv.setText(name);      //名称        xqMovieZhuyanTv.setText("主演:" + zhuyan);    //主演        xqMovieDaoyanTv.setText("导演:" + daoyan);    //导演        xqMovieTypeTv.setText("类型:" + type);      //电影类型        xqMovieAddrTv.setText("制片国家:" + addr);      //地址        xqMoviePaleyNumTv.setText("播放次数:" + Num);  //播放次数//          xqMovieJishuRc;//每一集        xqMovieJianjieTv.setText(jianjie);   // 介绍    }    //初始化 音乐    private void initViewMusic() {        LinearLayoutManager gridLayoutManager = new LinearLayoutManager(this);        movieTypeRl.setLayoutManager(gridLayoutManager);        GridLayoutManager gridLayoutManagers = new GridLayoutManager(MoviesActivity.this, 6);        movieRv.setLayoutManager(gridLayoutManagers);        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) heiLl.getLayoutParams();        params.height = 590;        heiLl.setLayoutParams(params);        fanyeLl.setVisibility(View.GONE);        playMusicLl.setVisibility(View.VISIBLE);        mp = new MediaPlayer();        mp.setOnCompletionListener(this);        mp.setOnErrorListener(this);    }    /**     * 查询 所有音乐 包括 类型下面的数据。     */    public void getAllMusic() {        OkGo.get(URL.getCategorySongs)                .tag(this)                .execute(new StringCallback() {                    @Override                    public void onSuccess(Response listType) {                        MusicTypeBean mb = GsonUtils.GsonToBean(listType.body(), MusicTypeBean.class);                        mMusicTypes = mb.getMsgBody();                        //类型适配器                        musicTypeAdapter = new MusicTypeAdapter(mMusicTypes, MoviesActivity.this);                        movieTypeRl.setAdapter(musicTypeAdapter);                        getAllSongs(mMusicTypes.get(0).getId(), songPageNo, 20);                        musicTypeAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {                            @Override                            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {                                getAllSongs(mMusicTypes.get(position).getId(), songPageNo, 20);                                //类型下面的音乐                            }                        });                    }                });    }    //&vodPartId=10&pageNo=2&pageSize=20    public void getAllSongs(int typeID, int songPageNo, int songSize) {//        OkGo.get(URL.getAllSongs+"&vodPartId"+typeID+"pageNo"+songPageNo+"pageSize"+songSize)        OkGo.get(URL.getAllSongs)                .tag(this)                .execute(new StringCallback() {                    @Override                    public void onSuccess(Response response) {                        Log.e("onSuccess音乐: .", response.body());                        MusicBean musicBean = GsonUtils.GsonToBean(response.body(), MusicBean.class);                        mSongs = musicBean.getMsgBody();                        if (mSongs.size() == 0) {                        } else {                            musicAdapter = new MusicAdapter(mSongs, MoviesActivity.this);                            movieRv.setAdapter(musicAdapter);                            Log.e("onSuccess音乐: .", mSongs.get(0).getSongName());                            musicAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {                                @Override                                public void onItemClick(BaseQuickAdapter adapter, View view, int position) {                                    currIndexMusic = position;//当前音乐点击的索引                                    start();                                    Glide.with(MoviesActivity.this).                                            load(mSongs.get(position).getLogo())                                            .into(musicPlayImg);                                }                            });                        }                    }                });    }    @Override    public void onCompletion(MediaPlayer mp) {//监听播放完成。自动播放下一首。        if (mSongs.size() > 0) {            next();        } else {            Toast.makeText(this, "播放列表为空", Toast.LENGTH_SHORT).show();        }    }    @Override    public boolean onError(MediaPlayer mp, int what, int extra) {        mp.reset();        return false;    }    @Override    protected void onDestroy() {//关闭音乐        if (mp != null) {            flagMusic = false;            try {                Thread.sleep(500);            } catch (InterruptedException e) {                e.printStackTrace();            }            //释放资源            mp.release();//            mp.stop();//            mp.pause();            if (mp != null) {                mp = null;            }        }        super.onDestroy();    }    //上一首    private void previous() {        if ((currIndexMusic - 1) >= 0) {            currIndexMusic--;            start();        } else {            Toast.makeText(this, "当前已经是第一首歌曲了", Toast.LENGTH_SHORT).show();        }    }    //下一自首    private void next() {        if (currIndexMusic + 1 < mSongs.size()) {            currIndexMusic++;            start();        } else {            Toast.makeText(this, "当前已经是最后一首歌曲了", Toast.LENGTH_SHORT).show();        }    }    //开始播放    private void start() {        if (mSongs.size() > 0 && currIndexMusic < mSongs.size()) {            String SongPath = mSongs.get(currIndexMusic).getMusicFile();            mp.reset();            try {                mp.setDataSource(SongPath);                mp.prepare();                mp.start();                initSeekBar();                esaa.execute(this);                currStateMusic = PAUSE;                //中文                musicInfoTv                        .setText(mSongs.get(currIndexMusic).getSongName() + "-" +                                mSongs.get(currIndexMusic).getSinger());                musicPlayTimesTv.setText("/" + toTime(mp.getDuration()));//播放总时长                Glide.with(this)                        .load(R.drawable.ic_play)                        .into(musicPlayStop);            } catch (IOException e) {                e.printStackTrace();            }        } else {            Toast.makeText(this, "播放列表为空", Toast.LENGTH_SHORT).show();        }    }    //初始化SeekBar    private void initSeekBar() {        musicPlaySb.setMax(mp.getDuration());        musicPlaySb.setProgress(0);        musicPlayTimeTv.setText(toTime(mp.getDuration()));        musicPlaySb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                //是否由用户改变                if (fromUser) {                    mp.seekTo(progress);                }            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {            }        });    }    private String toTime(int time) {        int minute = time / 1000 / 60;        int s = time / 1000 % 60;        String mm = null;        String ss = null;        if (minute < 10) mm = "0" + minute;        else mm = minute + "";        if (s < 10) ss = "0" + s;        else ss = "" + s;        return mm + ":" + ss;    }    private void play() {        switch (currStateMusic) {            case IDLE:                start();                currStateMusic = PAUSE;                break;            case PAUSE:                mp.pause();                Glide.with(this)                        .load(R.drawable.ic_play_n)                        .into(musicPlayStop);                currStateMusic = START;                break;            case START:                mp.start();                Glide.with(this)                        .load(R.drawable.ic_play)                        .into(musicPlayStop);                currStateMusic = PAUSE;        }    }    private Handler hander = new Handler() {        public void handleMessage(android.os.Message msg) {            switch (msg.what) {                case CURR_TIME_VALUE:                    //设置当前时间                    musicPlayTimeTv.setText(msg.obj.toString());                    break;                default:                    break;            }        }    };    public void run() {        flagMusic = true;        while (flagMusic) {            if (null!=mp){            if (mp.getCurrentPosition() < musicPlaySb.getMax()) {                musicPlaySb.setProgress(mp.getCurrentPosition());                Message msg = hander.obtainMessage(CURR_TIME_VALUE, toTime(mp.getCurrentPosition()));                hander.sendMessage(msg);                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }            }else {                flagMusic = false;            }        }    }    @Override    public void onBackPressed() {        if (JZVideoPlayer.backPress()) {            return;        }        super.onBackPressed();    }    @Override    protected void onPause() {        super.onPause();        JZVideoPlayer.releaseAllVideos();    }    @Override    public void onClick(View v) {    }}

XML页面

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/ic_bg"    android:orientation="vertical">    <spa.nabo.com.nabospa.view.title        android:id="@+id/title"        android:layout_width="match_parent"        android:layout_height="wrap_content">    spa.nabo.com.nabospa.view.title>        <include layout="@layout/back" />    <LinearLayout        android:id="@+id/movie_ll"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="horizontal"        android:visibility="visible">        <android.support.v7.widget.RecyclerView            android:id="@+id/movie_type_rl"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_weight="7">        android.support.v7.widget.RecyclerView>        <LinearLayout            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_weight="1"            android:clipChildren="true"            android:orientation="vertical">            <RelativeLayout                android:layout_width="match_parent"                android:layout_height="50dp"                android:orientation="horizontal">                <TextView                    android:id="@+id/zuixin_tv"                    android:layout_width="100dp"                    android:layout_height="50dp"                    android:clickable="true"                    android:focusable="true"                    android:gravity="center"                    android:text="最新"                    android:textColor="@drawable/movies_type_select_font_heibai"                    android:textSize="18sp" />                <TextView                    android:id="@+id/zuire_tv"                    android:layout_width="100dp"                    android:layout_height="50dp"                    android:layout_toRightOf="@id/zuixin_tv"                    android:focusable="true"                    android:gravity="center"                    android:text="最热"                    android:textColor="@drawable/movies_type_select_font_heibai"                    android:textSize="18sp" />                <TextView                    android:id="@+id/haoping_tv"                    android:layout_width="100dp"                    android:layout_height="50dp"                    android:layout_toRightOf="@id/zuire_tv"                    android:focusable="true"                    android:gravity="center"                    android:text="好评"                    android:textColor="@drawable/movies_type_select_font_heibai"                    android:textSize="18sp" />                <LinearLayout                    android:layout_width="wrap_content"                    android:layout_height="50dp"                    android:layout_alignParentRight="true"                    android:layout_marginRight="50dp"                    android:gravity="center"                    android:orientation="horizontal"                    android:paddingRight="20dp">                    <TextView                        android:layout_width="200dp"                        android:layout_height="40dp"                        android:background="@drawable/text_boder_bai"                        android:drawableRight="@drawable/sousuo_ic"                        android:gravity="center|left"                        android:hint="搜索"                        android:padding="5dp"                        android:textColorHint="@color/ziti_hint_font" />                LinearLayout>            RelativeLayout>            <LinearLayout                android:id="@+id/hei_ll"                android:layout_width="match_parent"                android:layout_height="510dp">                <android.support.v7.widget.RecyclerView                    android:id="@+id/movie_rv"                    android:layout_width="match_parent"                    android:layout_height="match_parent"                    >                android.support.v7.widget.RecyclerView>            LinearLayout>            <LinearLayout                android:id="@+id/fanye_ll"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:layout_marginTop="20dp"                android:gravity="center"                android:orientation="horizontal">                <ImageView                    android:id="@+id/left_iv"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:focusable="true"                    android:src="@drawable/left_select" />                <TextView                    android:id="@+id/yeshu"                    android:layout_width="40dp"                    android:layout_height="wrap_content"                    android:gravity="center"                    android:text="1"                    android:textColor="@color/font_baise_color"                    android:textSize="18sp" />                <ImageView                    android:id="@+id/right_iv"                    android:layout_width="40dp"                    android:layout_height="40dp"                    android:focusable="true"                    android:src="@drawable/right_select" />            LinearLayout>                        <LinearLayout                android:id="@+id/play_music_ll"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:layout_gravity="bottom"                android:gravity="bottom">                <include                    android:id="@+id/play_ll"                    layout="@layout/music_play" />            LinearLayout>        LinearLayout>    LinearLayout>    <RelativeLayout        android:id="@+id/movie_xiangqing_ll"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:visibility="gone"        android:padding="5dp"        >        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_margin="10dp"            android:orientation="vertical"            android:id="@+id/linearLayout3">            <LinearLayout                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:gravity="center"                android:orientation="horizontal">                <ImageView                    android:id="@+id/xq_movie_iv"                    android:layout_width="220dp"                    android:layout_height="270dp"                    android:src="@color/font_baise_color" />                <LinearLayout                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_marginLeft="20dp"                    android:orientation="vertical">                    <TextView                        android:id="@+id/xq_movie_name_tv"                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:text="24小时:末日重生 24Hours To Live(2017)"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                    <TextView                        android:id="@+id/xq_movie_zhuyan_tv"                        android:layout_width="350dp"                        android:layout_height="wrap_content"                        android:layout_marginTop="10dp"                        android:ellipsize="end"                        android:lineSpacingExtra="10dp"                        android:maxLines="2"                        android:text="主演: 泰伊·谢里丹 / 奥利维亚·库克 / 本·门德尔森 / 马克·里朗斯 / 丽娜·维特 / 森崎温 / 赵家正 / 西蒙·佩吉 / T·J·米勒 / 汉娜·乔恩-卡门 / 拉尔夫·尹爱森 / 苏珊·林奇 / 克莱尔·希金斯 / 劳伦斯·斯佩尔曼 / 佩蒂塔·维克斯 / 艾萨克·安德鲁斯"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                    <TextView                        android:id="@+id/xq_movie_daoyan_tv"                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:layout_marginTop="10dp"                        android:text="导演: 史蒂文·斯皮尔伯"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                    <TextView                        android:layout_width="wrap_content"                        android:id="@+id/xq_movie_type_tv"                        android:layout_height="wrap_content"                        android:layout_marginTop="10dp"                        android:text="类型: 动作 / 科幻 / 冒险"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                    <TextView                        android:id="@+id/xq_movie_addr_tv"                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:layout_marginTop="10dp"                        android:text="制片国家/地区: 美国"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                    <TextView                        android:id="@+id/xq_movie_paleyNum_tv"                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:layout_marginTop="10dp"                        android:text="播放次数:3892次"                        android:textColor="@color/ziti_font"                        android:textSize="18sp" />                LinearLayout>            LinearLayout>            <TextView                android:layout_marginTop="30dp"                android:id="@+id/xq_movie_jianjie_tv"                android:layout_width="595dp"                android:layout_height="wrap_content"                android:ellipsize="end"                android:lineSpacingExtra="10dp"                android:maxLines="3"                android:text="在2045年,现实世界衰退破败,人们沉迷于VR(虚拟现实)游戏“绿洲(OASIS)”的虚幻世界里寻求慰藉。马克·里朗斯饰演的“绿洲”的创始人临终前宣布,将亿万身家全部留给寻获他隐藏的彩蛋的游戏玩家,史上最大规模的寻宝冒险就此展开,由泰伊·谢里丹饰演的男主角韦德·沃兹(Wade Watts/Parzival)和数十亿竞争者踏上奇妙而又危机重重的旅途。"                android:textColor="@color/ziti_font"                android:textSize="18sp"                />        LinearLayout>        <LinearLayout            android:layout_toRightOf="@+id/linearLayout3"            android:orientation="vertical"            android:layout_width="wrap_content"            android:layout_alignParentRight="true"            android:layout_height="wrap_content">            <cn.jzvd.JZVideoPlayerStandard                android:focusable="true"                android:id="@+id/videoplayer"                android:layout_width="match_parent"                android:layout_height="300dp"/>                        <android.support.v7.widget.RecyclerView                android:visibility="gone"                android:id="@+id/xq_movie_jishu_rc"                android:layout_width="match_parent"                android:layout_height="250dp">            android.support.v7.widget.RecyclerView>        LinearLayout>    RelativeLayout>LinearLayout>

期待大神们的指点。
简单做个笔记。方便自己方便他人

更多相关文章

  1. Android(安卓)中的ORM框架
  2. [置顶] Android(安卓)开发中Parcel存储类型和数据容器
  3. Android中获取手机支持的硬件解码器类型以及对应的解码器名称
  4. SQlite字段类型升级
  5. Android之设置EditText输入类型(setInputType()方法和android:in
  6. Android下创建一个sqlite数据库
  7. Android中对MIME类型的理解
  8. Android音乐播放器 -- 滑动切换实现
  9. android音乐播放器开发_开篇

随机推荐

  1. android 系统签名
  2. Android(安卓)ComboBox
  3. Android 最简单的二维码和条形码扫描生成
  4. Android studio 安卓炫酷动画整合
  5. Android底部导航栏之RadioButton
  6. Context都没弄明白,还怎么做Android开发?
  7. android改机教程
  8. 解决Android横竖屏切换数据丢失问题的方
  9. Android elevation 用途
  10. Android安卓java中jni使用opencv native