话不多说,先来看两张效果图

看图片效果还凑合,就是“朋友圈”三个字和头像的动画过渡效果和微信朋友圈的实际效果还是有点差距,可以的话以后慢慢再优化吧,这里贴出相关的代码,可能部分代码比较多余,以后再做修改吧

一:界面布局代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:fitsSystemWindows="true"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.design.widget.AppBarLayoutandroid:id="@+id/appBar"android:layout_width="match_parent"android:fitsSystemWindows="true"android:layout_height="320dp"><android.support.design.widget.CollapsingToolbarLayoutandroid:id="@+id/collapsing_toolbar"android:layout_width="match_parent"android:layout_height="match_parent"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"android:fitsSystemWindows="true"app:contentScrim="?attr/colorPrimary"app:layout_scrollFlags="scroll|exitUntilCollapsed"><ImageViewandroid:id="@+id/friends_image_view"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:src="@drawable/apple"android:scaleType="centerCrop"app:layout_collapseMode="parallax" /><Buttonandroid:id="@+id/back_view"android:layout_width="20dp"android:layout_height="20dp"android:background="@drawable/ic_back"android:fitsSystemWindows="true"app:layout_collapseMode="pin"android:layout_marginTop="42dp"android:layout_marginLeft="2dp" /><Buttonandroid:layout_width="20dp"android:layout_height="20dp"android:fitsSystemWindows="true"android:background="@drawable/ic_camera"android:layout_gravity="right"app:layout_collapseMode="pin"android:layout_marginTop="40dp"android:layout_marginRight="5dp" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="昵称"android:layout_gravity="bottom|right"android:layout_marginRight="100dp"android:layout_marginBottom="5dp"/><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar_view"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:fitsSystemWindows="true"app:layout_collapseMode="pin" /></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout><android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="30dp"app:layout_behavior="@string/appbar_scrolling_view_behavior"/><ImageViewandroid:id="@+id/image1"android:layout_width="80dp"android:layout_height="80dp"android:layout_margin="10dp"android:background="@drawable/nav_icon"app:layout_anchor="@id/appBar"app:layout_anchorGravity="bottom|end" /></android.support.design.widget.CoordinatorLayout>

由于这当中用到了recyclerview,所以还得写一个子项的布局代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/image2"android:layout_width="40dp"android:layout_height="40dp"android:background="@drawable/orange"android:layout_marginLeft="8dp"android:layout_marginTop="10dp"/><LinearLayoutandroid:id="@+id/linear1"android:layout_toRightOf="@id/image2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:layout_marginLeft="5dp"android:layout_marginTop="10dp"><TextViewandroid:id="@+id/friend_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="好友昵称"android:textColor="#2CA3E5"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="5dp"android:text="好友所发状态内容"/></LinearLayout><LinearLayoutandroid:id="@+id/linear2"android:layout_below="@id/linear1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_alignLeft="@id/linear1"><ImageViewandroid:id="@+id/friend_image"android:layout_width="60dp"android:layout_height="60dp"android:background="@drawable/banana" /><ImageViewandroid:id="@+id/friend_imag"android:layout_width="60dp"android:layout_height="60dp"android:background="@drawable/pear"android:visibility="gone"/><ImageViewandroid:id="@+id/friend_ima"android:layout_width="60dp"android:layout_height="60dp"android:background="@drawable/pineapple"android:visibility="gone"/></LinearLayout><TextViewandroid:id="@+id/time_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/linear2"android:layout_alignLeft="@id/linear1"android:layout_marginTop="10dp"android:text="30分钟前"/><Buttonandroid:layout_width="20dp"android:layout_height="20dp"android:layout_alignBottom="@+id/time_text"android:layout_alignParentRight="true"android:layout_marginRight="10dp"android:background="@drawable/ic_comment"/><Viewandroid:layout_below="@+id/time_text"android:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="20dp"android:background="@android:color/darker_gray" /></RelativeLayout></android.support.v7.widget.CardView>

Friend类:

package com.example.wechattest;public class Friend {private int imageId;public Friend(int imageId) {this.imageId = imageId;}public int getImageId() {return imageId;}
}

FriendAdapter类:

package com.example.wechattest;import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import java.util.List;
import java.util.Random;public class FriendAdapter extends RecyclerView.Adapter<FriendAdapter.ViewHolder> {private Context mContext;private List<Friend> mFriendList;static class ViewHolder extends RecyclerView.ViewHolder {CardView cardView;ImageView image1;ImageView image2;ImageView image3;public ViewHolder(View view) {super(view);cardView = (CardView) view;image1 = (ImageView) view.findViewById(R.id.friend_image);image2 = (ImageView) view.findViewById(R.id.friend_imag);image3 = (ImageView) view.findViewById(R.id.friend_ima);}}public FriendAdapter(List<Friend> friendList) {mFriendList = friendList;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) {if (mContext == null) {mContext = parent.getContext();}View view = LayoutInflater.from(mContext).inflate(R.layout.friend_item,parent,false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(ViewHolder holder,int position) {getRandomLength();holder.image2.setVisibility(View.GONE);holder.image3.setVisibility(View.GONE);if (getRandomLength() == 1) {holder.image1.setVisibility(View.VISIBLE);} else if (getRandomLength() == 2) {holder.image1.setVisibility(View.VISIBLE);holder.image2.setVisibility(View.VISIBLE);} else if (getRandomLength() == 3) {holder.image1.setVisibility(View.VISIBLE);holder.image2.setVisibility(View.VISIBLE);holder.image3.setVisibility(View.VISIBLE);}}@Overridepublic int getItemCount() {return mFriendList.size();}private int getRandomLength() {Random random = new Random();int length = random.nextInt(3) + 1;return length;}
}

主活动代码:

package com.example.wechattest;import android.graphics.Color;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class FriendsActivity extends AppCompatActivity {private Friend[] friends = {new Friend(R.drawable.banana),new Friend(R.drawable.orange),new Friend(R.drawable.pear)};private List<Friend> friendList = new ArrayList<>();private FriendAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_friends);AppBarLayout appBarLayout = findViewById(R.id.appBar);appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {@Overridepublic void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapsing_toolbar);int color = Color.argb(200,0,0,0);collapsingToolbar.setCollapsedTitleTextColor(color);ImageView imageView = findViewById(R.id.image1);if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) { // 折叠状态collapsingToolbar.setTitle("朋友圈");imageView.setVisibility(View.GONE);} else { // 非折叠状态collapsingToolbar.setTitle("");imageView.setVisibility(View.VISIBLE);}}});Button backButton = (Button) findViewById(R.id.back_view);backButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});initFriends();RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);LinearLayoutManager layoutManager = new LinearLayoutManager(this);recyclerView.setLayoutManager(layoutManager);adapter = new FriendAdapter(friendList);recyclerView.setAdapter(adapter);}private void initFriends() {friendList.clear();for (int i = 0; i < 40; i++) {Random random = new Random();int index = random.nextInt(friends.length);friendList.add(friends[index]);}}
}

android开发--仿微信朋友圈界面相关推荐

  1. android com.mylhyl,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. photopicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  2. Android 实现仿微信朋友圈九宫格图片+NineGridView+ImageWatcher(图片查看:1.预览,2.拖动,3.放大,4.左右滑动,5.长按保存到手机)的功能

    一.测试 实现: 二.添加依赖包: implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.recycl ...

  3. android 微信高仿,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  4. Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)

    原址: http://blog.csdn.net/zhang3776813/article/details/52092591 /*** 仿微信朋友圈发布动态* 拍照或图库选择 * 压缩图片并保存**/ ...

  5. Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码

             原创作品,转载请注明出处:http://blog.csdn.net/zhang3776813/article/details/52092591 最近项目需求中要用到类似微信朋友圈发布 ...

  6. Android 高仿微信朋友圈动态, 支持双击手势放大并滑动查看图片。

    转载请注明出处: http://blog.csdn.net/sk719887916/article/details/40348873 作者skay: 最近参与了开发一款旅行APP,其中包含实时聊天和动 ...

  7. android 打开微信好友动态图片,Android GridView仿微信朋友圈显示图片

    最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路: 1 ...

  8. Android studio 仿微信朋友圈页面(简单版)

    好友动态页面,里面是好友发布的动态布局xml文件 <?xml version="1.0" encoding="utf-8"?> <Linear ...

  9. Android 实现仿微信朋友圈全文、收起的功能

    一.测试 实现: 二.准备工作 1.RecyclerView的适配器ExpandFoldTextAdapter.java public class ExpandFoldTextAdapter exte ...

最新文章

  1. How to call DLL and LIB files (SDK)
  2. SUSE Linux SFTP服务器配置
  3. win10+anaconda+cuda配置dlib,使用GPU对dlib的深度学习算法进行加速(以人脸检测为例)...
  4. 几种常用的配电网络接线
  5. JUnit4中使用Hamcrest测试框架的assertThat断言 小实例
  6. 图像处理中的dpi(Dots Per Inch)是什么单位?(图像每英寸长度内的像素点数)
  7. stm32串口学习(二)
  8. 正则中除了空格还有什么标识间距
  9. php缩略图代码,php 缩略图实现函数代码_php
  10. 1019 数字黑洞 (20)
  11. 【Selenium2】【HTMLTestRunner】
  12. 基于SSM校园一卡通管理系统
  13. C#租房管理系统(课程设计)
  14. 2.5A双路电机驱动模块 正反转 PWM调速 双H桥 步进电机 超L298N
  15. Snapchat三类广告形式及收益提升技巧详解
  16. select()函数的作用
  17. C语言自定义数据类型(二)使用结构体数组
  18. Python词法分析器实现
  19. WinRAR 3.51 注册码
  20. 机器学习 —— 支持向量机

热门文章

  1. 龙之谷服务器互通信息,龙之谷5月10日华南电信二区服务器互通
  2. Berlekamp-Massey 算法
  3. 【数据库】分库分表分区
  4. 第二章 共轴球面系统的物像关系
  5. android手机寿命,手机寿命到底有多长?苹果可用3年而安卓只有2年
  6. HTML学生个人网站作业设计:个人主页博客web网页设计制作 (HTML+CSS) (1)
  7. ssh方式登录huawei设备
  8. 9.那些年我们一起经历过的痛-“15个最常见介词的深层次含义”
  9. HarmonyOS Tools 默认浏览器设置
  10. Go底层 - 反射与interface③