안 드 로 이 드 는 위 챗 친구 들 에 게 칭찬 과 댓 글 기능 을 모방 합 니 다.
그림 배열 은 RecyclerView 로 이 루어 집 니 다.팝 업 창 효 과 는 사용자 정의 PopupWindow 를 사용 합 니 다.'좋아요'를 누 르 면 로 컬 에서 데이터 베 이 스 를 요청 하고 flag 를 설정 하여 현재 사용자 의 id 를 가 져 온 후에 id 를 가지 고 서버 post 에 flag 를 가 져 옵 니 다.댓 글 은 비교적 간단 합 니 다.또한 현재 친구 id(또는 닉네임)를 얻 고 내용 을 가지 고 서버 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[]{
" , 。",
" , , , , ?",
" , , 。",
" , ; , ",
" 。 、 , ",
" : , , , ?",
" , , , , , 、 。",
" , ; , ",
" 。 、 、 、 、 、 、 、 ",
" : , , ",
" , 。",
" , , , , ?",
" , , 。",
" , ; , ",
" 。 、 , ",
" : , , , ?",
" , , , , , 、 。",
" , ; , ",
" 。 、 、 、 、 、 、 、 ",
" : , , "
};
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);
}
}
구체 적 인 팝 업 창 위치 와 좋아요 버튼,댓 글 버튼 의 실현 효 과 는 토스트 로 만 팝 업 되 고 자신의 업무 논 리 를 추가 할 수 있 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.