一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android仿微信朋友圈點贊和評論功能

Android仿微信朋友圈點贊和評論功能

2022-02-28 15:18Jeromer Android

這篇文章主要為大家詳細介紹了Android仿微信朋友圈點贊和評論功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近在做朋友圈的項目,所以寫一個Android仿朋友圈點贊和評論功能Demo,代碼就是簡單實現了一下功能,沒有做優化,湊合看。

圖文排列是用的RecyclerView實現的,彈窗效果是用的自定義的PopupWindow,點贊應該是在本地請求數據庫,設置一個flag,獲取當前用戶的id后,帶著id向服務器post一個flag,評論就比較簡單了,也是獲取當前朋友id(或者昵稱),帶著內容,向服務器post

Android仿微信朋友圈點贊和評論功能

貼代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
package com.example.lenovo.dianzandemo;
 
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
 private RecyclerView recyclerView;
 private int[] pics;
 private String[] descs;
 public Context mContext;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 mContext = getApplicationContext();
 pics = new int[]{R.mipmap.test1, R.mipmap.test5, R.mipmap.test6, R.mipmap.test7, R.mipmap.test8, R.mipmap.test9, R.mipmap.test10, R.mipmap.test12, R.mipmap.test13, R.mipmap.test14, R.mipmap.test1, R.mipmap.test5, R.mipmap.test6, R.mipmap.test7, R.mipmap.test8, R.mipmap.test9, R.mipmap.test10, R.mipmap.test12, R.mipmap.test13, R.mipmap.test14};
 descs = new String[]{
  "詩人承陳隋風流,浮靡相矜。",
  "古今詩人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?",
  "老杜詩,凡一篇皆工拙相半,古人文章類如此。",
  "王介甫只知巧語之為詩,而不知拙語亦詩也;山谷只知奇語之為詩,而不知常語亦詩也",
  "子美詩奄有古今。學者能識國風、騷人之旨,然后知子美用意處",
  "或問王荊公云:編四家詩,以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?",
  "山谷云,老杜作詩,退之作文,無一字無來處,蓋后人讀書少,故謂韓、杜自作此語耳。",
  "觀杜者不唯見其律,而有見其騷者焉;不唯見其騷,而有見其雅者焉",
  "盛唐一味秀麗雄渾。杜則精粗、巨細、巧拙、新陳、險易、淺深、濃淡、肥瘦靡不畢具",
  "大概杜有三難:極盛難繼,首創難工,遘衰難挽",
  "詩人承陳隋風流,浮靡相矜。",
  "古今詩人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?",
  "老杜詩,凡一篇皆工拙相半,古人文章類如此。",
  "王介甫只知巧語之為詩,而不知拙語亦詩也;山谷只知奇語之為詩,而不知常語亦詩也",
  "子美詩奄有古今。學者能識國風、騷人之旨,然后知子美用意處",
  "或問王荊公云:編四家詩,以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?",
  "山谷云,老杜作詩,退之作文,無一字無來處,蓋后人讀書少,故謂韓、杜自作此語耳。",
  "觀杜者不唯見其律,而有見其騷者焉;不唯見其騷,而有見其雅者焉",
  "盛唐一味秀麗雄渾。杜則精粗、巨細、巧拙、新陳、險易、淺深、濃淡、肥瘦靡不畢具",
  "大概杜有三難:極盛難繼,首創難工,遘衰難挽"
 };
 initView();
 }
 
 private void initView() {
 recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
 recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
 
 RecyclerAdapter recyclerAdapter = new RecyclerAdapter(pics, descs, mContext);
 recyclerView.setAdapter(recyclerAdapter);
 }
 
 
}
 
 
class RecyclerAdapter extends RecyclerView.Adapter<MyViewHolder> {
 
 
 private Context mContext;
 private String[] descs;
 private int[] pics;
 private PopupWindow mPop;
 
 public RecyclerAdapter(int[] pics, String[] descs, Context context) {
 this.pics = pics;
 this.descs = descs;
 this.mContext = context;
 }
 
 @Override
 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 View view = View.inflate(parent.getContext(), R.layout.item_layout, null);
 MyViewHolder viewHolder = new MyViewHolder(view);
 return viewHolder;
 }
 
 @Override
 public void onBindViewHolder(final MyViewHolder holder, final int position) {
 holder.desc.setText(descs[position]);
 holder.icon.setImageResource(pics[position]);
 holder.zan.setOnClickListener(new View.OnClickListener() {
 
  @Override
  public void onClick(View v) {
//  Toast.makeText(mContext, position + "被點擊了", Toast.LENGTH_SHORT).show();
  int zanWidth = holder.zan.getWidth();
  int zanHeight = holder.zan.getHeight();
  View contentView = LayoutInflater.from(mContext).inflate(R.layout.pop_layout, null);
  TextView popZan = (TextView) contentView.findViewById(R.id.pop_zan);
  TextView popPinlun = (TextView) contentView.findViewById(R.id.pop_pinlun);
  popZan.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
   Toast.makeText(mContext, "點贊", Toast.LENGTH_SHORT).show();
   }
  });
  popPinlun.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
   Toast.makeText(mContext, "評論", Toast.LENGTH_SHORT).show();
   }
  });
 
  if (mPop == null) { //優化:當popwindow為空的時候才創建,不為空,直接復用
   int width = zanWidth * 5; //設置PopupWindow的寬
   int height = zanHeight; //設置PopupWindow的高
   boolean focusable = true; //設置PopupWindow可獲取焦點
   mPop = new PopupWindow(contentView, width, height, focusable);
   //為PopupWindow設置背景,獲取焦點才能生效(谷歌官方要求)
   mPop.setBackgroundDrawable(new ColorDrawable());
  }
  View anchor = holder.zan; //指定PopupWindow在哪個控件下面顯示
  int xoff = -zanWidth;//指定PopupWindow在x軸方向上的偏移量
  int yoff = -zanHeight;//指定PopupWindow在Y軸方向上的偏移量
  mPop.showAsDropDown(anchor, xoff, yoff);
  }
 });
 }
 
 @Override
 public int getItemCount() {
 return pics.length;
 }
 
 
}
 
class MyViewHolder extends RecyclerView.ViewHolder {
 
 public TextView desc;
 public ImageView icon;
 public ImageView zan;
 
 public MyViewHolder(View itemView) {
 super(itemView);
 desc = (TextView) itemView.findViewById(R.id.desc);
 icon = (ImageView) itemView.findViewById(R.id.icon);
 zan = (ImageView) itemView.findViewById(R.id.zan);
 }
}

具體的彈窗位置和點贊按鈕,評論按鈕實現效果只用了吐司彈出,可以加自己的業務邏輯進去。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/vxwjf/article/details/51907957

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清不卡免费一区二区三区 | 国产资源中文字幕 | 99热人人 | 日本精品久久久久久久久免费 | 十八女下面流水不遮免费 | 涩色网| 调教扩张宫颈女人惨叫 | 国产精品怡红院永久免费 | 天天摸天天操天天爽 | 俄罗斯三级在线观看级 | 天天操天天舔 | 国产一区视频在线免费观看 | 国产一级毛片潘金莲的奶头 | 果冻传媒在线观看的 | 欧美精品久久一区二区三区 | 射综合网 | 国产欧美精品一区二区三区 | 国内精品久久久久久不卡影院 | 亚洲天堂免费观看 | 洗濯屋し在线观看 | 精品一产品大全 | 99视频在线观看视频一区 | 日剧整部剧护妻狂魔免费观看全集 | 欧美帅老头oldmangay | 亚洲成色WWW久久网站夜月 | 99热成人精品免费久久 | 9re视频这里只有精品 | 亚洲免费视频播放 | 波多野结衣xxxxx在线播放 | 国产99精品成人免费视频 | 教师系列 大桥未久在线 | 2021最新国产成人精品免费 | 美女秘密网站 | 边摸边吃奶又黄激烈视频韩国 | 国产第一福利视频导航在线 | 热久久99精品这里有精品 | 国产福利一区二区在线精品 | 亚洲美女aⅴ久久久91 | 国产精品亚洲综合第一区 | 青青成人福利国产在线视频 | 久久精品视在线观看85 |