Android 自定义ListView实现QQ空间界面(说说内包含图片、视频、点赞、评论、转发功能)

前端时间刚好需要做一个类似于QQ空间的社区分享功能,说说内容包含文字(话题、内容)、视频、图片,还需包含点赞,评论,位置信息等功能。 就采用LIstview做了一个,先来看下效果,GIF太大,CSDN传不了,请移步Gitee连接:GIF效果

1. 先来分析一下ListView中每一个条目包含的控件,请看下图

序号1:头像,ImageView,自定义为圆形即可;
序号2:用户名,TextView;
序号3:发布时间,TextView;
序号4:说说文字部分,TextView;
序号5:说说中视频或图片部分,Videoview;
序号6:点赞信息,TextView,动态添加;
序号7:位置信息,TextView;
序号8/9/10:点赞、评论、转发,均为ImageView;
序号11:评论区,TextView,动态添加;
序号12:评论框,EditText,其右侧图片是通过drawableRight设置的,事件监听会在后面详细说;

上面图中漏了一个,在视频正中央还需要有一个播放按钮,为ImageView,通过切换ImageView中图片实现播放与暂停切换。

2. 确定好有哪些控件后,我们用xml实现布局,文件命名为video_brower_item.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 xmlns:app="http://schemas.android.com/apk/res-auto">
 <LinearLayout
  android:id="@+id/mContainer"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:paddingLeft="10dp"
  android:paddingRight="10dp"
  android:paddingTop="10dp"
  android:background="@android:color/white">
  <LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal">
   <com.xiaok.winterolympic.custom.CircleImageView
    android:id="@+id/video_avatar"
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:src="@drawable/head_picture" />
   <TextView
    android:id="@+id/video_username"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="xiaok"
    android:textColor="#000000"
    android:layout_marginStart="15dp"
    android:textSize="24sp"
    android:textStyle="bold" />
   <TextView
    android:id="@+id/video_date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="20dp"
    android:textSize="14sp"
    android:text="刚刚"/>
  </LinearLayout>
  <TextView
   android:id="@+id/video_descripation"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginTop="15dp"
   android:textSize="16sp"
   android:textColor="#000000"
   android:text="#共迎冬奥# 冬奥"/>
  <VideoView
   android:id="@+id/video_view"
   android:layout_width="match_parent"
   android:layout_height="230dp"
   android:layout_marginTop="15dp"/>
  <RelativeLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="horizontal">
   <TextView
    android:id="@+id/video_position"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="北京市朝阳区"
    android:layout_marginTop="12dp"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="10dp"/>
   <ImageView
    android:id="@+id/video_iv_good"
    style="@style/VideoShareImageView"
    android:src="@mipmap/video_share_good"
    android:layout_toStartOf="@+id/video_iv_comment"
    android:layout_marginEnd="20dp"/>
   <ImageView
    android:id="@+id/video_iv_comment"
    style="@style/VideoShareImageView"
    android:src="@mipmap/video_share_comment"
    android:layout_toStartOf="@+id/video_iv_share"
    android:layout_marginEnd="20dp"/>
   <ImageView
    android:id="@+id/video_iv_share"
    style="@style/VideoShareImageView"
    android:src="@mipmap/video_share_share"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="10dp"/>
  </RelativeLayout>
  <EditText
   android:id="@+id/video_et_comment"
   android:layout_width="match_parent"
   android:layout_height="40dp"
   android:hint="评论"
   android:textSize="14sp"
   android:layout_marginBottom="20dp"
   android:drawableRight="@drawable/video_send_picture"/>
 </LinearLayout>
 <ImageView
  android:id="@+id/video_play"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:src="@mipmap/ic_record_play"
  android:layout_gravity="center_horizontal"
  android:layout_marginTop="192dp"/>
</FrameLayout>

3. 定义一个类,这里命名为VideoBrower,用于封装ListView中每个条目所用到的数据:

package com.xiaok.winterolympic.model;
import java.io.Serializable;
public class VideoBrower implements Serializable {
  private static final long serialVersionUID = 1L;
  private int avatarId;
  private String username;
  private String date;
  private String videoDescripation;
  private String videoPath;
  private String position;
  public VideoBrower(int avatarId, String username, String date, String videoDescripation, String videoPath, String position) {
    this.avatarId = avatarId;
    this.username = username;
    this.date = date;
    this.videoDescripation = videoDescripation;
    this.videoPath = videoPath;
    this.position = position;
  }
  public int getAvatarId() {
    return avatarId;
  }
  public String getUsername() {
    return username;
  }
  public String getDate() {
    return date;
  }
  public String getVideoDescripation() {
    return videoDescripation;
  }
  public String getVideoPath() {
    return videoPath;
  }
  public String getPosition() {
    return position;
  }
  public void setAvatarId(int avatarId) {
    this.avatarId = avatarId;
  }
  public void setDate(String date) {
    this.date = date;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public void setVideoDescripation(String videoDescripation) {
    this.videoDescripation = videoDescripation;
  }
  public void setVideoPath(String videoPath) {
    this.videoPath = videoPath;
  }
  public void setPosition(String position) {
    this.position = position;
  }
}

这里解释下,头像我是通过封装R文件中对应的资源ID实现的,所以格式为int,其他应该不用解释。

总结

以上所述是小编给大家介绍的Android 自定义ListView实现QQ空间界面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • android Listview模拟聊天界面

    本文实例为大家分享了android Listview模拟聊天界面的具体代码,供大家参考,具体内容如下 代码: package com.example.test; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; im

  • Android开发之ListView的简单用法及定制ListView界面操作示例

    本文实例讲述了Android开发之ListView的简单用法及定制ListView界面操作.分享给大家供大家参考,具体如下: 效果: 如何从获得listview上item的内容 详见:https://www.jb51.net/article/158000.htm 中遇到的问题部分. 布局实现: 有个listview显示 一个edit和button发送 <?xml version="1.0" encoding="utf-8"?> <RelativeL

  • android 通过向viewpage中添加listview来完成滑动效果(类似于qq滑动界面)

    文件名:page.xml 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill

  • Android 新闻界面模拟ListView和ViewPager的应用

    模拟新闻 APP 的界面 1)写 ListView 之前先写布局: 这里有两种 Item 的布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" androi

  • Android ListView自定义Adapter实现仿QQ界面

    PS:listview中有一些简单使用的适配器,如:SimpleAdapter:构造方法SimpleAdapter(Context context,List<Map<String,?>> data,reString [] from,int [] to),但这种适配器过于单调,往往不能达到用户想要的效果,想要随心所欲,就用到了BaseAdapter,自定义适配器. 如图: 1.首先写布局文件 activity_layout.xml <?xml version="1.0

  • Android App界面的ListView布局实战演练

    一.继承listActivity.使用arrayAdapter 使用ListView和arrayAdapter布局,是ListView布局中最为简单的一种,首先我们会建立一个组件用来显示数据,例如main.xml <?xml version="1.0" encoding="utf-8"?> <!-- 主界面本身就是一个显示组件 --> <TextView xmlns:android="http://schemas.androi

  • Android 自定义ListView实现QQ空间界面(说说内包含图片、视频、点赞、评论、转发功能)

    前端时间刚好需要做一个类似于QQ空间的社区分享功能,说说内容包含文字(话题.内容).视频.图片,还需包含点赞,评论,位置信息等功能. 就采用LIstview做了一个,先来看下效果,GIF太大,CSDN传不了,请移步Gitee连接:GIF效果 1. 先来分析一下ListView中每一个条目包含的控件,请看下图 序号1:头像,ImageView,自定义为圆形即可: 序号2:用户名,TextView; 序号3:发布时间,TextView; 序号4:说说文字部分,TextView; 序号5:说说中视频或

  • Android UI设计系列之自定义ListView仿QQ空间阻尼下拉刷新和渐变菜单栏效果(8)

    好久没有写有关UI的博客了,刚刚翻了一下之前的博客,最近一篇有关UI的博客:Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7) ,实现各种风格效果的对话框,在那篇博客写完后由于公司封闭开发封网以及其它原因致使博客中断至今,中断这么久很是惭愧,后续我会尽量把该写的都补充出来.近来项目有个需求,要做个和QQ空间类似的菜单栏透明度渐变和下拉刷新带有阻尼回弹的效果.于是花点时间动手试了试,基本上达到了QQ空间的效果,截图如下: 通过观察QQ空间的运行效果,发现当往上滚动时菜单

  • Android自定义View仿QQ健康界面

    最近一直在学习自定义View相关的知识,今天给大家带来的是QQ健康界面的实现.先看效果图: 可以设置数字颜色,字体颜色,运动步数,运动排名,运动平均步数,虚线下方的蓝色指示条的长度会随着平均步数改变而进行变化.整体效果还是和QQ运动健康界面很像的. 自定义View四部曲,一起来看看怎么实现的. 1.自定义view的属性: <?xml version="1.0" encoding="utf-8"?> <resources> //自定义属性名,定

  • Android自定义ListView实现仿QQ可拖拽列表功能

    我们大致的思路,其实是这样子的,也是我的设想,我们可以先去实现一个简单的ListView的数据,但是他的Adapter,我们可以用系统封装好的,然后传递进去一个实体类,最后自定义一个listview去操作,所以我们先把准备的工作做好,比如? list_item.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.a

  • Android自定义SwipeLayout仿QQ侧滑条目

    Android自定义SwipeLayout仿QQ侧滑条目,供大家参考,具体内容如下 先看动图 看布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent

  • Android自定义View 仿QQ侧滑菜单的实现代码

    先看看QQ的侧滑效果 分析一下 先上原理图(不知道能否表达的清楚 ==) -首先这里使用了 Android 的HorizontalScrollView 水平滑动布局作为容器,当然我们需要继承它自定义一个侧滑视图 - 这个容器里面有一个父布局(一般用LinerLayout,本demo用的是),这个父布局里面有且只有两个子控件(布局),初始状态菜单页的位置在Y轴上存在偏移这样可以就可以形成主页叠在菜单页的上方的视觉效果:然后在滑动的过程程中 逐渐修正偏移,最后菜单页和主页并排排列.原理搞清了实现起来

  • Android自定义listview布局实现上拉加载下拉刷新功能

    listview实现上拉加载以及下拉刷新的方式有很多.下面是我写的一种自定义的布局,复用性也比较的强.首先就是继承的listview的自定义view.   AutoListView.Java: package com.example.mic.testdemo.view; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.os.Bu

  • Android 自定义ListView示例详解

    本文讲实现一个自定义列表的Android程序,程序将实现一个使用自定义的适配器(Adapter)绑定 数据,通过contextView.setTag绑定数据有按钮的ListView. 系统显示列表(ListView)时,首先会实例化一个适配器,本文将实例化一个自定义的适配器.实现 自定义适配器,必须手动映射数据,这时就需要重写getView()方法,系统在绘制列表的每一行的时候 将调用此方法. ListView在开始绘制的时候,系统自动调用getCount()函数,根据函数返回值得到ListVi

  • Android 自定义可拖拽View界面渲染刷新后不会自动回到起始位置

    以自定义ImageView为例: /** * 可拖拽ImageView * Created by admin on 2017/2/21. */ public class FloatingImageView extends ImageView{ public FloatingImageView(Context context) { super(context); } public FloatingImageView(Context context, AttributeSet attrs) { su

  • Android自定义ViewGroup实现竖向引导界面

    一般进入APP都有欢迎界面,基本都是水平滚动的,今天和大家分享一个垂直滚动的例子. 先来看看效果把: 1.首先是布局文件: <com.example.verticallinearlayout.VerticalLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:i

随机推荐