欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android仿微信朋友圈點(diǎn)贊和評(píng)論功能

 更新時(shí)間:2018年06月02日 11:45:49   作者:Jeromer  
這篇文章主要為大家詳細(xì)介紹了Android仿微信朋友圈點(diǎn)贊和評(píng)論功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

圖文排列是用的RecyclerView實(shí)現(xiàn)的,彈窗效果是用的自定義的PopupWindow,點(diǎn)贊應(yīng)該是在本地請(qǐng)求數(shù)據(jù)庫(kù),設(shè)置一個(gè)flag,獲取當(dāng)前用戶的id后,帶著id向服務(wù)器post一個(gè)flag,評(píng)論就比較簡(jiǎn)單了,也是獲取當(dāng)前朋友id(或者昵稱),帶著內(nèi)容,向服務(wù)器post

貼代碼:

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[]{ 
  "詩(shī)人承陳隋風(fēng)流,浮靡相矜。", 
  "古今詩(shī)人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?", 
  "老杜詩(shī),凡一篇皆工拙相半,古人文章類如此。", 
  "王介甫只知巧語(yǔ)之為詩(shī),而不知拙語(yǔ)亦詩(shī)也;山谷只知奇語(yǔ)之為詩(shī),而不知常語(yǔ)亦詩(shī)也", 
  "子美詩(shī)奄有古今。學(xué)者能識(shí)國(guó)風(fēng)、騷人之旨,然后知子美用意處", 
  "或問(wèn)王荊公云:編四家詩(shī),以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?", 
  "山谷云,老杜作詩(shī),退之作文,無(wú)一字無(wú)來(lái)處,蓋后人讀書少,故謂韓、杜自作此語(yǔ)耳。", 
  "觀杜者不唯見(jiàn)其律,而有見(jiàn)其騷者焉;不唯見(jiàn)其騷,而有見(jiàn)其雅者焉", 
  "盛唐一味秀麗雄渾。杜則精粗、巨細(xì)、巧拙、新陳、險(xiǎn)易、淺深、濃淡、肥瘦靡不畢具", 
  "大概杜有三難:極盛難繼,首創(chuàng)難工,遘衰難挽", 
  "詩(shī)人承陳隋風(fēng)流,浮靡相矜。", 
  "古今詩(shī)人眾矣,而杜子美為首,豈非以其流落饑寒,終身不用,而一飯未嘗忘君也歟?", 
  "老杜詩(shī),凡一篇皆工拙相半,古人文章類如此。", 
  "王介甫只知巧語(yǔ)之為詩(shī),而不知拙語(yǔ)亦詩(shī)也;山谷只知奇語(yǔ)之為詩(shī),而不知常語(yǔ)亦詩(shī)也", 
  "子美詩(shī)奄有古今。學(xué)者能識(shí)國(guó)風(fēng)、騷人之旨,然后知子美用意處", 
  "或問(wèn)王荊公云:編四家詩(shī),以杜甫為第一,李白為第四,豈白之才格詞致不逮甫也?", 
  "山谷云,老杜作詩(shī),退之作文,無(wú)一字無(wú)來(lái)處,蓋后人讀書少,故謂韓、杜自作此語(yǔ)耳。", 
  "觀杜者不唯見(jiàn)其律,而有見(jiàn)其騷者焉;不唯見(jiàn)其騷,而有見(jiàn)其雅者焉", 
  "盛唐一味秀麗雄渾。杜則精粗、巨細(xì)、巧拙、新陳、險(xiǎn)易、淺深、濃淡、肥瘦靡不畢具", 
  "大概杜有三難:極盛難繼,首創(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 + "被點(diǎn)擊了", 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, "點(diǎn)贊", Toast.LENGTH_SHORT).show(); 
   } 
  }); 
  popPinlun.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View v) { 
   Toast.makeText(mContext, "評(píng)論", Toast.LENGTH_SHORT).show(); 
   } 
  }); 
 
  if (mPop == null) { //優(yōu)化:當(dāng)popwindow為空的時(shí)候才創(chuàng)建,不為空,直接復(fù)用 
   int width = zanWidth * 5; //設(shè)置PopupWindow的寬 
   int height = zanHeight; //設(shè)置PopupWindow的高 
   boolean focusable = true; //設(shè)置PopupWindow可獲取焦點(diǎn) 
   mPop = new PopupWindow(contentView, width, height, focusable); 
   //為PopupWindow設(shè)置背景,獲取焦點(diǎn)才能生效(谷歌官方要求) 
   mPop.setBackgroundDrawable(new ColorDrawable()); 
  } 
  View anchor = holder.zan; //指定PopupWindow在哪個(gè)控件下面顯示 
  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); 
 } 
} 

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論