当前位置:网站首页>Android实战——简单网络视频播放器,2021最新百度、头条等公司Android面试题目

Android实战——简单网络视频播放器,2021最新百度、头条等公司Android面试题目

2022-01-15 02:33:44 mb61c1dbbb44788

}

getView方法来返回视频对象,主要代码如下

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null) {

convertView = LayoutInflater.from(context).inflate(R.layout.item_mainlv,parent,false);

holder = new ViewHolder(convertView);

convertView.setTag(holder);

}else {

holder = (ViewHolder) convertView.getTag();

}

// 获取指定位置的数据源

VideoBean.ItemListBean.DataBean dataBean = mDatas.get(position).getData();

// 设置发布者的信息

VideoBean.ItemListBean.DataBean.AuthorBean author = dataBean.getAuthor();

holder.nameTv.setText(author.getName());

holder.descTv.setText(author.getDescription());

String iconURL = author.getIcon();

if (!TextUtils.isEmpty(iconURL)) {

Picasso.with(context).load(iconURL).into(holder.iconIv);

}

// 获取点赞数和评论数

VideoBean.ItemListBean.DataBean.ConsumptionBean consumpBean = dataBean.getConsumption();

holder.heartTv.setText(consumpBean.getRealCollectionCount()+“”);

holder.replyTv.setText(consumpBean.getReplyCount()+“”);

// 设置视频播放器的信息

holder.jzvdStd.setUp(dataBean.getPlayUrl(),dataBean.getTitle(), JzvdStd.SCREEN_NORMAL);

String thumbUrl = dataBean.getCover().getFeed(); //缩略图的网络地址

Picasso.with(context).load(thumbUrl).into(holder.jzvdStd.thumbImageView);

holder.jzvdStd.positionInList = position;

return convertView;

}

 6.写完上面的几步后,需要加载网络数据

此处使用安卓原生的方法来加载网络数据。封装自带的HttpUtils方法。

public static String getJsonContent(String path){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

try {

URL url = new URL(path);

//自带的http连接对象

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.connect();//连接

InputStream is = conn.getInputStream();//读取输入流

byte[]buf = new byte[1024];//暂时读入数组中

int hasRead = 0;

while ((hasRead = is.read(buf))!=-1){

baos.write(buf,0,hasRead);

}

} catch (Exception e) {

e.printStackTrace();

}

return baos.toString();

}

 7.在MainActivity中调用上面的方法

private void loadData() {

/* 创建新的线程,完成数据的获取*/

new Thread(new Runnable() {

@Override

public void run() {

String jsonContent = HttpUtils.getJsonContent(url);

// 子线程不能更新UI,需要通过handler发送数据回到主线程

Message message = new Message(); //发送的消息对象

message.what = 1;

message.obj = jsonContent;

//子线程发送回去

handler.sendMessage(message);

}

}).start();

}

此处用到Handler机制

Handler handler = new Handler(){

@Override

public void handleMessage(Message msg) {

if (msg.what == 1) {

String json = (String) msg.obj;

// 使用Gson 解析数据

com.example.new2.VideoBean videoBean = new Gson().fromJson(json, com.example.new2.VideoBean.class);

// 过滤了不需要的数据

List<com.example.new2.VideoBean.ItemListBean> itemList = videoBean.getItemList();

for (int i = 0; i < itemList.size(); i++) {

com.example.new2.VideoBean.ItemListBean listBean = itemList.get(i);

if (listBean.getType().equals(“video”)) {

mDatas.add(listBean);

}

}

// 提示适配器更新数据

adapter.notifyDataSetChanged();

}

}

};

 8.AndroidManifest添加网络请求

<uses-permission android:name=“android.permission.INTERNET”/>

在application中添加android:usesCleartextTraffic=“true”,进行全局配置。

**9.注意:**该框架需要在JDK1.8版本,在bulid.gradle(app)的android中添加声明

compileOptions {

targetCompatibility = 1.8

sourceCompatibility = 1.8

}

 10.最终运行效果

Android实战——简单网络视频播放器,2021最新百度、头条等公司Android面试题目_程序员

 学习视频链接https://www.bilibili.com/video/BV1X7411n7SL?p=1&share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i&timestamp=1609666763&unique_k=wVwU7W

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

Android实战——简单网络视频播放器,2021最新百度、头条等公司Android面试题目_Android_02

以上【历年大厂高级工程师面试题集】、【Android高级进阶教学视频】、【Android高级知识点学习PDF】皆无偿分享给大家。如有需要,点击** 【Android架构视频+BATJ面试专题PDF+学习笔记】**即可免费获取。

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

版权声明
本文为[mb61c1dbbb44788]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15466190/4928958

随机推荐