package com.amlogic.tzr.charismatic_yichang.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.DragEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.amlogic.tzr.charismatic_yichang.BaseActivity; import com.amlogic.tzr.charismatic_yichang.R; import com.amlogic.tzr.charismatic_yichang.Tool.LoadFinishCallBack; import com.amlogic.tzr.charismatic_yichang.adapter.FeedAdapter; import com.amlogic.tzr.charismatic_yichang.bean.Feed; import com.amlogic.tzr.charismatic_yichang.bean.User; import com.amlogic.tzr.charismatic_yichang.event.LoginEvent; import com.amlogic.tzr.charismatic_yichang.view.AutoLoadRecyclerView; import com.amlogic.tzr.charismatic_yichang.view.CircleTransformation; import com.squareup.picasso.Picasso; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import cn.bmob.v3.BmobQuery; import cn.bmob.v3.datatype.BmobFile; import cn.bmob.v3.listener.FindListener; import de.greenrobot.event.EventBus; public class UserProfileActivity extends BaseActivity implements AppBarLayout.OnOffsetChangedListener{ private static final String TAG = "UserProfileActivity"; public static final String CURRENT_USER="current_user"; private static final int STATE_REFRESH = 0; private static final int STATE_MORE = 1; private AppBarLayout appBarLayout; private SwipeRefreshLayout mSwipeRefreshLayout; private AutoLoadRecyclerView mRecyclerView; private FeedAdapter mAdapter; private List<Feed> list=new ArrayList<>(); private BmobQuery<Feed> bmobQuery; private LoadFinishCallBack mLoadFinisCallBack; private int limit = 10; private int curPage = 0; private Context mContext; private Toolbar mToolbar; private ImageView user_icon; private TextView nameView; private ImageView sexView; private RelativeLayout rl_toast; private User mUser; private String user_id = "123"; private String bitmapUrl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_profile); mContext = UserProfileActivity.this; mUser= (User) getIntent().getSerializableExtra(CURRENT_USER); initViews(); initDatas(); queryData(0, STATE_REFRESH); EventBus.getDefault().register(this); } private void initDatas() { // User mUser = BmobUser.getCurrentUser(mContext, User.class); if (mUser != null) { user_id = mUser.getObjectId(); } else { startActivity(new Intent(mContext, LoginActivity.class)); finish(); } BmobFile file=mUser.getHead_thumb(); if (file!=null) { String icon_url =file.getFileUrl(mContext); Picasso.with(mContext).load(icon_url).transform(new CircleTransformation()).into(user_icon); } else { Picasso.with(mContext).load(R.mipmap.ic_user).transform(new CircleTransformation()).into(user_icon); } nameView.setText(mUser.getUsername()); boolean sex=mUser.getSex(); if (sex==false) { sexView.setImageResource(R.mipmap.userinfo_icon_male); }else{ sexView.setImageResource(R.mipmap.userinfo_icon_female); } } private void initViews() { mToolbar = (Toolbar) findViewById(R.id.tl_aup_toolBar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.ctl_aup_toolbar); // collapsingToolbar.setExpandedTitleColor(R.color.white); // collapsingToolbar.setCollapsedTitleTextColor(R.color.accent); collapsingToolbar.setTitle("用户详情"); collapsingToolbar.setOnDragListener(new View.OnDragListener() { @Override public boolean onDrag(View v, DragEvent event) { if (event.getAction() == DragEvent.ACTION_DRAG_ENDED) { Log.e(TAG, "DragEvent.ACTION_DRAG_ENDED"); } return false; } }); appBarLayout= (AppBarLayout) findViewById(R.id.apl_aup_appbar); user_icon = (ImageView) findViewById(R.id.iv_vup_userProfilePhoto); user_icon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(mContext,UserInfoActivity.class); intent.putExtra(CURRENT_USER,mUser); startActivity(intent); } }); nameView= (TextView) findViewById(R.id.tv_vup_userName); sexView= (ImageView) findViewById(R.id.iv_vup_sex); mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.srl_aup_refresh); mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { queryData(0, STATE_REFRESH); } }); mRecyclerView = (AutoLoadRecyclerView) findViewById(R.id.rv_aup_feed); mRecyclerView.setHasFixedSize(false); mLoadFinisCallBack = mRecyclerView; mRecyclerView.setLoadMoreListener(new AutoLoadRecyclerView.onLoadMoreListener() { @Override public void loadMore() { queryData(curPage, STATE_MORE); } }); mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); mAdapter = new FeedAdapter(mContext, list); mRecyclerView.setAdapter(mAdapter); } @Override public void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { mSwipeRefreshLayout.setEnabled(true); } else { mSwipeRefreshLayout.setEnabled(false); } } private void queryData(final int page, final int actionType) { BmobQuery<User> innerQuery = new BmobQuery<User>(); String[] id = {user_id}; innerQuery.addWhereContainedIn("objectId", Arrays.asList(id)); bmobQuery = new BmobQuery<Feed>(); bmobQuery.order("-createdAt"); bmobQuery.setLimit(limit); bmobQuery.setSkip(page * limit); bmobQuery.addWhereMatchesQuery("user", "_User", innerQuery); bmobQuery.include("user"); bmobQuery.findObjects(mContext, new FindListener<Feed>() { @Override public void onSuccess(List<Feed> queryList) { if (queryList.size() > 0) { // rl_toast.setVisibility(View.GONE); if (actionType == STATE_REFRESH) { curPage = 0; list.clear(); } for (Feed bean : queryList) { list.add(bean); } curPage++; mRecyclerView.loadFinish(); } else { // rl_toast.setVisibility(View.VISIBLE); } mAdapter.notifyDataSetChanged(); mSwipeRefreshLayout.setRefreshing(false); } @Override public void onError(int i, String s) { mRecyclerView.loadFinish(); mSwipeRefreshLayout.setRefreshing(false); // rl_toast.setVisibility(View.VISIBLE); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_user_profile, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; case R.id.action_edit: break; } return super.onOptionsItemSelected(item); } @Override protected void onResume() { super.onResume(); appBarLayout.addOnOffsetChangedListener(this); } @Override protected void onPause() { super.onPause(); appBarLayout.removeOnOffsetChangedListener(this); } public void onEventMainThread(LoginEvent event) { User mUser = event.getmUser(); if (mUser != null) { if (mUser.getUsername()!=null) { nameView.setText(mUser.getUsername()); } BmobFile icon = mUser.getHead_thumb(); if (icon != null) { Picasso.with(mContext).load(mUser.getHead_thumb().getFileUrl(mContext)).transform(new CircleTransformation()).into(user_icon); } else { Picasso.with(context).load(R.mipmap.ic_user).transform(new CircleTransformation()).into(user_icon); } } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } }