国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

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

香港云服务器
服務(wù)器之家 - 編程語言 - Android - Android仿微信朋友圈點贊和評論功能

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

2022-02-28 15:18Jeromer Android

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

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

圖文排列是用的RecyclerView實現(xiàn)的,彈窗效果是用的自定義的PopupWindow,點贊應(yīng)該是在本地請求數(shù)據(jù)庫,設(shè)置一個flag,獲取當(dāng)前用戶的id后,帶著id向服務(wù)器post一個flag,評論就比較簡單了,也是獲取當(dāng)前朋友id(或者昵稱),帶著內(nèi)容,向服務(wù)器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[]{
  "詩人承陳隋風(fēng)流,浮靡相矜。",
  "古今詩人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?",
  "老杜詩,凡一篇皆工拙相半,古人文章類如此。",
  "王介甫只知巧語之為詩,而不知拙語亦詩也;山谷只知奇語之為詩,而不知常語亦詩也",
  "子美詩奄有古今。學(xué)者能識國風(fēng)、騷人之旨,然后知子美用意處",
  "或問王荊公云:編四家詩,以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?",
  "山谷云,老杜作詩,退之作文,無一字無來處,蓋后人讀書少,故謂韓、杜自作此語耳。",
  "觀杜者不唯見其律,而有見其騷者焉;不唯見其騷,而有見其雅者焉",
  "盛唐一味秀麗雄渾。杜則精粗、巨細(xì)、巧拙、新陳、險易、淺深、濃淡、肥瘦靡不畢具",
  "大概杜有三難:極盛難繼,首創(chuàng)難工,遘衰難挽",
  "詩人承陳隋風(fēng)流,浮靡相矜。",
  "古今詩人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?",
  "老杜詩,凡一篇皆工拙相半,古人文章類如此。",
  "王介甫只知巧語之為詩,而不知拙語亦詩也;山谷只知奇語之為詩,而不知常語亦詩也",
  "子美詩奄有古今。學(xué)者能識國風(fēng)、騷人之旨,然后知子美用意處",
  "或問王荊公云:編四家詩,以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?",
  "山谷云,老杜作詩,退之作文,無一字無來處,蓋后人讀書少,故謂韓、杜自作此語耳。",
  "觀杜者不唯見其律,而有見其騷者焉;不唯見其騷,而有見其雅者焉",
  "盛唐一味秀麗雄渾。杜則精粗、巨細(xì)、巧拙、新陳、險易、淺深、濃淡、肥瘦靡不畢具",
  "大概杜有三難:極盛難繼,首創(chuàng)難工,遘衰難挽"
 };
 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) { //優(yōu)化:當(dāng)popwindow為空的時候才創(chuàng)建,不為空,直接復(fù)用
   int width = zanWidth * 5; //設(shè)置PopupWindow的寬
   int height = zanHeight; //設(shè)置PopupWindow的高
   boolean focusable = true; //設(shè)置PopupWindow可獲取焦點
   mPop = new PopupWindow(contentView, width, height, focusable);
   //為PopupWindow設(shè)置背景,獲取焦點才能生效(谷歌官方要求)
   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);
 }
}

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

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

延伸 · 閱讀

精彩推薦
670
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一级片在线观看 | 午夜视频福利在线观看 | 韩国毛片在线观看 | 黄色裸体网站 | 日韩在线播| 国产99精品在线 | 免费激情网站 | 特及毛片 | 91仓库| 亚洲精品视频在线观看免费 | 日韩中文一区二区 | 啪一啪操一操 | 君岛美绪一区二区三区 | 日韩电影免费观看 | 国产精品久久久久久久久免费桃花 | 国产成人在线一区二区 | 久久久久久久国产 | 中文字幕高清视频 | 日韩免费一区二区 | 免费日韩在线 | 久久精彩 | 精品久久久久久久人人人人传媒 | 超级碰在线 | 精品一区二区三区四区 | 日韩成人免费av | 免费在线a| 在线观看三区 | 欧美午夜精品久久久久免费视 | 久久av网 | 久久合久久 | 美女午夜影院 | 精品久久久久久国产 | 亚洲成av人片在线观看香蕉 | 日本中文字幕在线观看 | 91中文字幕 | 在线a视频 | 欧美精品久久 | www国产精品 | 免费在线黄色电影 | 日韩av一区在线 | 国产福利视频在线观看 |