视频播放详情页面Fresco框架Retrofit+RxJava+okHttp实现网络加载
2018-01-18 09:32
489 查看
权限哦
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
第一一定是导依赖 retrofit和fresco和视频播放依赖
compile 'io.reactivex.rxjava2:rxjava:2.0.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:converter-scalars:2.1.0'
compile 'com.jakewharton:butterknife:8.8.1'
compile 'com.facebook.fresco:fresco:0.12.0' compile 'com.dou361.ijkplayer:jjdxm-ijkplayer:1.0.5'
public class MainActivity extends AppCompatActivity implements XiangQingPrestener.IXiangQingView { @BindView(R.id.simpleDetails) SimpleDraweeView simpleDetails; @BindView(R.id.title) TextView title; @BindView(R.id.price) TextView price; @BindView(R.id.addCart) Button addCart; private XiangQingPrestener xiangQingPrestener; PlayerView play; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); xiangQingPrestener = new XiangQingPrestener(this); xiangQingPrestener.getData("10"); String url = "http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4"; play = new PlayerView(this) .setTitle("什么") .setScaleType(PlayStateParams.fitparent) .hideMenu(true) .forbidTouch(false) .setPlaySource(url); play.startPlay(); } @OnClick(R.id.addCart) public void onViewClicked() { } @Override public void success(XiangQingBean.DataBean list) { //设置数据 String[] split = list.getImages().split("\\|"); simpleDetails.setImageURI(Uri.parse(split[0])); title.setText(list.getTitle()); price.setText(list.getPrice() + ""); } @Override protected void onStop() { super.onStop(); play.stopPlay(); } //销毁 @Override protected void onDestroy() { super.onDestroy(); xiangQingPrestener.detach(); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_gravity="center_vertical" tools:context="com.example.administrator.view.MainActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <!-- <VideoView android:id="@+id/videoView" android:la 4000 yout_width="match_parent" android:layout_height="180dp" /> --> <include layout="@layout/simple_player_view_player" android:layout_width="match_parent" android:layout_height="180dp"/> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/simpleDetails" android:layout_width="match_parent" android:layout_height="200dp" ></com.facebook.drawee.view.SimpleDraweeView> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="标题" android:textSize="20sp" /> <TextView android:id="@+id/price" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="价格" android:textColor="#FEB016" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_weight="1" android:orientation="horizontal"> <ImageView android:layout_width="0dp" android:layout_height="30dp" android:layout_weight="1" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="0dp" android:layout_height="30dp" android:layout_weight="1" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="0dp" android:layout_height="30dp" android:layout_weight="1" android:src="@mipmap/ic_launcher" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="25dp" android:layout_weight="1" android:orientation="horizontal"> <Button android:id="@+id/addCart" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ff0" android:text="加入购物车" android:textColor="#fff" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#f00" android:text="立即购买" android:textColor="#fff" /> </LinearLayout> </LinearLayout> </LinearLayout>
public class XiangQingModel { public void getData(String pid, final IXiangQiangModel iXiangQiangModel){ Map<String ,String > map=new HashMap<>(); map.put("pid","10"); map.put("source","android"); RetrofitManager.get("product/getProductDetail",map, new BaseObserver<XiangQingBean>() { @Override public void success(XiangQingBean xiangQingBean) { if(iXiangQiangModel!=null){ iXiangQiangModel.seccess(xiangQingBean); } } @Override public void failure(int code) { } }); } public interface IXiangQiangModel{ void seccess(XiangQingBean xiangQingBean); } }
public class XiangQingPrestener { IXiangQingView iXiangQingView; XiangQingModel xiangQingModel; public XiangQingPrestener(IXiangQingView iXiangQingView) { this.iXiangQingView = iXiangQingView; xiangQingModel = new XiangQingModel(); } public void getData(String pid) { xiangQingModel.getData(pid, new XiangQingModel.IXiangQiangModel() { @Override public void seccess(XiangQingBean xiangQingBean) { iXiangQingView.success(xiangQingBean.getData()); } }); } public interface IXiangQingView { void success(XiangQingBean.DataBean list); } //防止内存泄漏 public void detach() { iXiangQingView = null; } }网络框架的包在另一篇文章,拿过来直接用啦。用fresco的朋友别忘记了app初始化注册哟。
Fresco.initialize(this);直接用吧!
相关文章推荐
- webview 加载h5页面,播放视频+全屏,实现简单封装
- iis配置站点,页面中的video 视频标签加载的视频无法播放或者无法加载的解决方法
- Eclipse集成ijkplayer并实现本地和网络视频播放等
- 基于EasyNVR+EasyDSS H5视频直播二次开发实现业务需求:直接使用播放页面
- 安卓与PC网络对接实现视频实时播放
- GStreamer实现视频本地播放并RTP上传到网络VLC播放
- UE4加载播放网络上的视频
- 视频播放网站CDN内容分发网络简单代码实现
- 基于EasyNVR+EasyDSS H5视频直播二次开发实现业务需求:直接使用播放页面
- Android_开发 Gallery实现异步加载网络图片 并只加载当前停止页面图
- ijkplayer简单实现播放 ijkplayer是Bilibili基于ffmpeg开发并开源的轻量级视频播放器,支持播放本地网络视频,也支持流媒体播放。支持
- Android实现网络视频播放
- 视频播放网站CDN内容分发网络实现
- Android之MediaPlayer播放网络视频的实现方法
- H5页面实现一个Audio标签加载多个音频文件,并进行播放和展示音频长度
- Jquery实现视频播放页面的关灯开灯效果
- Android提高之MediaPlayer播放网络视频的实现方法
- Android如何让WebView中的HTML5页面实现视频全屏播放
- 原生js实现移动端的视频播放可拖拽小窗功能,点击小窗返回到原始页面