当前位置:网站首页>Android實戰——簡單網絡視頻播放器,2021最新百度、頭條等公司Android面試題目

Android實戰——簡單網絡視頻播放器,2021最新百度、頭條等公司Android面試題目

2022-01-15 02:36:12 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://chowdera.com/2022/01/202201150232489656.html

随机推荐