Android 制作一款短视频app软件可在线观看(视频实时更新)

第一步:完成界面的设计
界面布局采用LinearLayout,添加TextView控件显示标题,添加4个Button按钮可切换不同的短视频内容,在添加一个RecyclerView控件来显示内容。添加RecyclerView控件时需要下载第三方库,代码如下:

    //noinspection GradleCompatibleimplementation 'com.android.support:design:28.0.0'//noinspection GradleCompatibleimplementation 'com.android.support:support-v4:28.0.0'//noinspection GradleCompatibleimplementation 'com.android.support:appcompat-v7:28.0.0'
<?xml version="1.0" encoding="utf-8"?>
<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:background="#E8E6E6"tools:context=".MainActivity"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:textSize="30sp"android:background="#FFF"android:text="实时段子" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:orientation="horizontal"><Buttonandroid:id="@+id/b1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#FFF"android:layout_marginLeft="5dp"android:text="推荐"/><Buttonandroid:id="@+id/b2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#FFF"android:layout_marginLeft="5dp"android:text="热点"/><Buttonandroid:id="@+id/b3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#FFF"android:layout_marginLeft="5dp"android:text="资讯"/><Buttonandroid:id="@+id/b4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#FFF"android:layout_marginLeft="5dp"android:text="口碑"/></LinearLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/r1"android:layout_width="match_parent"android:layout_marginTop="20dp"android:background="#FFF"android:layout_height="wrap_content"/></LinearLayout>

界面截图:

第二步:找到控件的ID并绑定

第三步:解析url数据
第一:定义一个类DataModel.class

public class DateModel implements Serializable {}

使用快捷键(Alt+s)粘贴全部过去数据,之后一直点击OK

在网络请求之前在AndroidManifest.xml文件中添加网络权限

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

第二:完成网络的请求
定义之前需要使用到okhttp3和gson第三方库,找到build.grade文件,输入以下代码:

    implementation 'com.squareup.okhttp3:okhttp:3.12.1'debugImplementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'implementation 'com.google.code.gson:gson:2.8.5'

定义一个请求接口

public void requestDate()
{}

在该接口进行网络请求

public void requestDate(){String url=urls;OkHttpClient okHttpClient=new OkHttpClient();Request request=new Request.Builder().url(url).get().build();Call call=okHttpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,"网络连接失败",Toast.LENGTH_SHORT).show();}});}@Overridepublic void onResponse(Call call, Response response) throws IOException {String result=response.body().string();Gson gson=new Gson();final DateModel dateModel=gson.fromJson(result,DateModel.class);runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(MainActivity.this,"网络连接成功",Toast.LENGTH_SHORT).show();}});}});}

第四步:完成列表的相关操作
首先定义列表的布局,在res的文件下layou创建一个xml文件,实现布局

布局采用的是LinearLayout,3个TextView控件显示内容,ImageView显示图片,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="150dp"><LinearLayoutandroid:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:gravity="center"android:layout_marginTop="20dp"android:orientation="vertical"><TextViewandroid:id="@+id/v1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="15sp"android:textStyle="bold"android:layout_marginRight="40dp"android:text="犄角的尽头"/><TextViewandroid:id="@+id/v2"android:layout_width="200dp"android:layout_height="wrap_content"android:singleLine="true"android:textSize="12sp"android:text="自制多米诺开瓶器,一次开一百瓶乌苏。让开盖更加简单且硬气"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:layout_marginTop="20dp"android:gravity="center"android:orientation="horizontal"><ImageViewandroid:id="@+id/i1"android:layout_width="80dp"android:layout_height="130dp"android:src="@mipmap/photo" /><TextViewandroid:id="@+id/v3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="10sp"android:layout_marginLeft="10dp"android:text="2020-07-31 21:00:03"/></LinearLayout>
</LinearLayout>


第二:定义一个Adapter1的类来实现列表的功能

public class Adapter1 {}

在该类中继承RecyclerView.Adapter

public class Adapter1 extends RecyclerView.Adapter {}

之后把鼠标移至Adapter1,在键盘按Alt+Enter 选择第一个,最后选择ok


在倒数第二个花括号中定义一个类

public class ViewHolder extends RecyclerView.ViewHolder{}

之后把鼠标移至RecyclerView.ViewHolder,在键盘按Alt+Enter,选择第一个,按确定

在该类中填写控件的id

将Json的数据放进列表

更改当前的值

找到Adapter1.ViewHolder onCreateViewHolder的函数,绑定xml并返回当前的值

第4个控件,ImageView在线网络图片显示,需要下载第三方库,找到build.grade文件,输入以下语句

    implementation 'com.github.bumptech.glide:glide:4.9.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

找到onBindViewHolder函数,继续将获取到的JSON数据传递到ImageView控件,在传递之前需要定义一个接口
找到onBindViewHolder函数,将获取到的JSON数据传递到指定的控件

返回数据的长度

添加列表监听器,在倒数第二个花括号定义一个类

public interface OnItemClickListener{void onClick(String a,String b,String c,String d);}

使用监听器

第五步:返回MainActivity.java文件,选择列表显示的样式并提取解析后的相关数据。
列表显示的样式输入以下代码:

private LinearLayoutManager linearLayoutManager;
linearLayoutManager=new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
r1.setLayoutManager(linearLayoutManager);


提取解析后的相关数据

public void getDate(DateModel dateModel)
{}
public void getDate(DateModel dateModel){if(dateModel==null||dateModel.getResult()==null){return;}Adapter1 adapter1=new Adapter1(dateModel.getResult(), MainActivity.this, new Adapter1.OnItemClickListener() {@Overridepublic void onClick(String a, String b, String c, String d) {}});r1.setAdapter(adapter1);}

第六步:点击当前内容跳转到第二页面播放视频
首先创建布局和MainActivity2文件

采用LinearLayout布局,添加3个TextView控件,显示标题和时间、内容。在添加一个VideoView控件播放视频,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity2"><TextViewandroid:id="@+id/t1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30sp"android:paddingLeft="20dp"android:textStyle="bold"android:layout_marginTop="10dp"android:text="犄角的尽头"/><TextViewandroid:id="@+id/t2"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="15sp"android:paddingLeft="20dp"android:layout_marginTop="10dp"android:text="2020-07-31 21:00:03"/><TextViewandroid:id="@+id/t3"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:layout_marginTop="10dp"android:paddingLeft="20dp"android:paddingRight="20dp"android:text="自制多米诺开瓶器,一次开一百瓶乌苏。让开盖更加简单且硬气"/><VideoViewandroid:id="@+id/v1"android:layout_width="350dp"android:layout_gravity="center"android:layout_marginTop="40dp"android:layout_height="450dp"/></LinearLayout>

界面截图:

找到ID并绑定

返回MainActivity传递数据过来

返回MainActivity2接收数据

播放视频

返回MainActivity,实现4个按钮的监听事件

        b1.setEnabled(false);b1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {b1.setEnabled(false);b2.setEnabled(true);b3.setEnabled(true);b4.setEnabled(true);urls="https://api.apiopen.top/getJoke?page=1&count=100&type=video";requestDate();}});b2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {b1.setEnabled(true);b2.setEnabled(false);b3.setEnabled(true);b4.setEnabled(true);urls="https://api.apiopen.top/getJoke?page=2&count=100&type=video";requestDate();}});b3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {b1.setEnabled(true);b2.setEnabled(true);b3.setEnabled(false);b4.setEnabled(true);urls="https://api.apiopen.top/getJoke?page=3&count=100&type=video";requestDate();}});b4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {b1.setEnabled(true);b2.setEnabled(true);b3.setEnabled(true);b4.setEnabled(false);urls="https://api.apiopen.top/getJoke?page=4&count=100&type=video";requestDate();}});

以下是本项目的源代码:
https://download.csdn.net/download/Scxioi0/12913104

Android 制作一款短视频app软件可在线观看(视频实时更新)相关推荐

  1. 视频去水印软件?在线去除视频水印工具网站?

    视频去水印软件哪个好?视频水印就是视频画面中出现的各种图案,如果有这些图案我们需要找方法把这些图案从视频上去掉.今天我们就来看一下视频去水印的超级简单的方法: 第一步:~~~~~~51视频编辑 首先通 ...

  2. 短视频APP软件开发源码提供

    短视频APP开发,短视频APP开发源码提供.谈起大家身旁这些喜爱看短视频的人肯定是不计其数的,终究大伙儿空闲情况下都是会喜爱拿起手机来刷一下游戏娱乐内容,因此这类取出手机上打开软件就能通过收看的短视频 ...

  3. 短视频app开发:如何实现视频直播功能

    短视频源码的实现 在短视频app开发中,实现视频直播功能需要借助短视频源码.短视频源码可以提供一个完整的视频直播功能模块,包括视频采集.编码.推流等.因此,我们可以选择一些开源的短视频源码,例如LFL ...

  4. 赤兔android手机视频恢复软件,赤兔安卓手机视频恢复软件

    下面我们对赤兔安卓手机视频恢复软件v10.5官方版文件阐述相关使用资料和赤兔安卓手机视频恢复软件v10.5官方版文件的更新信息. 赤兔安卓手机视频恢复软件 赤兔安卓手机视频恢复软件是一款专门针对安卓系 ...

  5. 短视频app源码、小视频源码存储功能如何实现?

    在短视频app源码(小视频源码)开发中,考虑到后期用户上传短视频时需要大量应用到存储功能,故而需要实现这一功能,具体需要怎么做呢,本文将以云豹短视频app源码为例,为大家进行讲解. 一.阅读前请注意: ...

  6. 短视频app开发之ios小视频开发经验共享

    移动端相比起PC端的优势除了它便携以外,还有一个比较明显的优势就是可以通过手机快速方便的创造各种多媒体作品.比如照片分享.视频录制等,目前大部分市面上的手机APP都存在这些功能.短视频行业之所以如此火 ...

  7. 视频调色软件有哪些?视频调色软件推荐。

    视频调色软件有哪些?视频调色是指在视频制作过程中,通过修改视频的色彩.亮度.对比度.饱和度等参数,来改变视频的视觉效果,以达到更好的表现效果和艺术效果的过程.在影视制作.电视节目制作.广告制作等领域中 ...

  8. 快手今日头条火山秒拍陌陌美拍抖音小咖秀视频下载软件神器或手机 视频去重消重伪原创 批量处...

    今日头条趣东方头条凤凰新浪看点网易企鹅UC大鱼一点资讯自媒体快传视频处理软件 今日头条推广视频教程自媒体推广短视频教程今日头条引流小白入门 视频解析下载支持今日头条快手抖音火山映客陌陌西瓜美拍微博等 ...

  9. 鸿蒙密视视频加密软件,鸿蒙密视视频加密软件

    鸿蒙密视针对视频夸平台的离线观看.防拷贝.防刻录.防一号多人使用等问题,推出专门针对企业视频防护完整解决方案,鸿蒙密视视频加密软件,实现对视频数据安全的保护. 功能特点 1.支持所有视频音频格式 鸿蒙 ...

最新文章

  1. 一张图看懂encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别 一、这四个方法的用处 1、用来编码和解码URI的 统一资源标识符
  2. spoj16935 Straight Line Spiral Pattern (Act 3)
  3. (转)python中的*args和**kw到底是个啥。看下面的例子就会懂了
  4. 解决问题的经验-javaweb-第一次-已掌握技术栈大致总结(部分),和相关理解,总结,以及对未来学习方向的规划
  5. 删除电脑中的mysql数据库吗_【数据库】怎么彻底删除mysql服务?
  6. java怎么表示正无穷大_有什么比无穷大更大,比无穷小更小?
  7. 将速度加快到自己的个人代码生成器中
  8. [Leedcode][JAVA][第33题][搜索旋转排序数组]
  9. 最优化学习笔记(二十)——全局搜索算法
  10. xcode配置最新版opencv
  11. Set集合框架(HashSet and TreeSet)
  12. User can only log in via localhost
  13. 公式化学习urllib(第一卷)
  14. 某大型银行深化系统技术方案之十四:服务层之服务调度机制
  15. 软件测试人员的简历是什么样子的?
  16. matlab无法打开wps的xls文件,WPS无法打开XLS文件怎么办 XLS文件出现异常无法打开怎么处理...
  17. Android开发——应用宝推广渠道出现MD5值重复,请勿重复上传
  18. Android Studio出现APP闪退问题(My Application keeps stopping)
  19. 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】
  20. 国产x86服务器芯片,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...

热门文章

  1. 东华大学计算机研究生上岸经验(已上岸)
  2. 2022年西式面点师(初级)培训试题及模拟考试
  3. Wallflower paper测试数据集(原Test Images for Wallflower Paper)
  4. 数据仓库、数据整合、ETL、ELT和EII之间的区别?
  5. 视觉识别数字、十字路口和T字路口,巡线于一体的基于openmv的解决方案(2021年电赛f题)
  6. 中超风云2服务器维护,时隔三年“中超”IP强势回归《中超风云2》手游现已开启预约...
  7. DNS服务器配置和测试
  8. kaggle比赛前2%摸奖银牌总结
  9. N叉树(N-ary Tree)
  10. 智慧警务三维电子沙盘系统