您的位置:首页 > 理论基础 > 计算机网络

视频播放详情页面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);直接用吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: