package com.xinxin.everyxday.activity; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; import android.view.animation.DecelerateInterpolator; import android.view.animation.OvershootInterpolator; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.andexert.library.RippleView; import com.loopj.android.http.RequestParams; import com.txx.androidpaginglibrary.listwrap.listview.PagingListViewWrapBase; import com.xinxin.everyxday.R; import com.xinxin.everyxday.base.imgloader.ImgLoadUtil; import com.xinxin.everyxday.bean.ShowOrderFeaturedBean; import com.xinxin.everyxday.dao.model.Like; import com.xinxin.everyxday.dao.util.DbService; import com.xinxin.everyxday.fragment.ListBaseActivity; import com.xinxin.everyxday.global.InterfaceUrlDefine; import com.xinxin.everyxday.util.TimeUtil; import com.xinxin.everyxday.widget.swipeback.SwipeBackSherlockActivity; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; /** * Created by xinxin on 15/8/4. */ public class SortActivity extends RefreshingListBaseActivity<ShowOrderFeaturedBean> implements View.OnClickListener { private Toolbar mToolbar; private ArrayList<ShowOrderFeaturedBean> voList = new ArrayList<ShowOrderFeaturedBean>(); private final Map<ImageView, AnimatorSet> likeAnimations = new HashMap<>(); private static final DecelerateInterpolator DECCELERATE_INTERPOLATOR = new DecelerateInterpolator(); private static final AccelerateInterpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator(); private static final OvershootInterpolator OVERSHOOT_INTERPOLATOR = new OvershootInterpolator(4); private String viewTitle; private DbService mDbService; @Override protected void onCreate(Bundle savedInstanceState) { Intent intent = getIntent(); if(intent == null){ finish(); return; } viewTitle = intent.getStringExtra("title"); super.onCreate(savedInstanceState); mDbService = DbService.getInstance(this); mToolbar = (Toolbar) findViewById(R.id.toolbar); mToolbar.setNavigationIcon(getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); mToolbar.setTitle(viewTitle);// 标题的文字需在setSupportActionBar之前,不然会无效 setSupportActionBar(mToolbar); mToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SortActivity.this.finish(); } }); mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { } return true; } }); loadListData(); } @Override public List<ShowOrderFeaturedBean> getViewListData() { return voList; } @Override public Class<ShowOrderFeaturedBean> getBeanType() { return ShowOrderFeaturedBean.class; } @Override public String getRequestType() { return InterfaceUrlDefine.SHAIDAN_EXCELLENT_URL; }; @Override public RequestParams getRequestParams() { RequestParams params = new RequestParams(); params.put("offset", 0); params.put("category",URLEncoder.encode(viewTitle.replace("#",""))); return params; } @Override public void addListViewToContainer(View listView) { SwipeRefreshLayout refreshListView = (SwipeRefreshLayout)listView; ListView contentView = (ListView)refreshListView.findViewById(R.id.list_view); contentView.setDivider(null); contentView.setDividerHeight(0); contentView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); containerView.removeAllViews(); containerView.addView(listView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } @Override public View getCovertView(int position) { View convertView = inflater.inflate(R.layout.showorder_list_view_item_new, null); return convertView; } @Override public void initCovertView(View convertView, final int position) { final ShowOrderFeaturedBean vo = voList.get(position); // ImageView userPhoto = (ImageView)convertView.findViewById(R.id.showorder_list_user_avater); // ImgLoadUtil.displayImageWithAnimation(vo.getAvatar(), userPhoto); TextView userName = (TextView)convertView.findViewById(R.id.showorder_list_user_name); userName.setText(vo.getTitle().replace("今日最佳:", "")); final ImageView like = (ImageView)convertView.findViewById(R.id.btnLike); like.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mDbService.queryLike("WHERE NEWID = "+ vo.getId()).size() == 0){ Like likeBean = new Like(); likeBean.setAvatar(vo.getAvatar()); likeBean.setCover(vo.getCover()); likeBean.setCreateTime(vo.getCreateTime()); likeBean.setDetailNew(vo.getDetailNew()); likeBean.setNewid(vo.getId() + ""); likeBean.setTitle(vo.getTitle()); likeBean.setCategory(vo.getCategory()); mDbService.saveLike(likeBean); updateHeartButton(like, true, position); System.out.println("daxiao === " + likeAnimations.size()); } } }); System.out.println("LikeList === " + mDbService.queryLike("WHERE NEWID = " + vo.getId()).size()); if(mDbService.queryLike("WHERE NEWID = "+ vo.getId()).size() != 0){ like.setBackgroundResource(R.mipmap.ic_heart_red); }else{ like.setBackgroundResource(R.mipmap.ic_heart_outline_grey); } TextView publishTime = (TextView)convertView.findViewById(R.id.new_time); publishTime.setText(TimeUtil.getMonthAndDay(vo.getCreateTime())); TextView category = (TextView)convertView.findViewById(R.id.new_sort); category.setText("#"+vo.getCategory()); ImageView orderImg = (ImageView)convertView.findViewById(R.id.showorder_list_img); ImgLoadUtil.displayImageWithAnimationAndNoCorner(vo.getCover(), orderImg); RippleView mRippleView = (RippleView)convertView.findViewById(R.id.item_rippleview); mRippleView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() { @Override public void onComplete(RippleView rippleView) { Intent intent = new Intent(); intent.setClass(SortActivity.this, ToolbarControlDetailListViewActivity.class); intent.putExtra("today_new_title", vo.getTitle().replace("今日最佳:", "")); intent.putExtra("today_new_url", vo.getDetail()); intent.putExtra("today_new_id", vo.getId()); intent.putExtra("today_new_buyurl", vo.getBuyurl()); intent.putExtra("today_detail_new_url", vo.getDetailNew()); intent.putExtra("today_new_cover",vo.getCover()); intent.putExtra("today_new_time",vo.getCreateTime()); intent.putExtra("today_new_avatar",vo.getAvatar()); intent.putExtra("today_new_category", vo.getCategory()); startActivity(intent); } }); } private void updateHeartButton(final ImageView view, boolean animated, int position) { if (animated) { if (!likeAnimations.containsKey(view)) { AnimatorSet animatorSet = new AnimatorSet(); likeAnimations.put(view, animatorSet); ObjectAnimator rotationAnim = ObjectAnimator.ofFloat(view, "rotation", 0f, 360f); rotationAnim.setDuration(300); rotationAnim.setInterpolator(ACCELERATE_INTERPOLATOR); ObjectAnimator bounceAnimX = ObjectAnimator.ofFloat(view, "scaleX", 0.2f, 1f); bounceAnimX.setDuration(300); bounceAnimX.setInterpolator(OVERSHOOT_INTERPOLATOR); ObjectAnimator bounceAnimY = ObjectAnimator.ofFloat(view, "scaleY", 0.2f, 1f); bounceAnimY.setDuration(300); bounceAnimY.setInterpolator(OVERSHOOT_INTERPOLATOR); bounceAnimY.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { view.setBackgroundResource(R.mipmap.ic_heart_red); } }); animatorSet.play(rotationAnim); animatorSet.play(bounceAnimX).with(bounceAnimY).after(rotationAnim); animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { likeAnimations.remove(view); } }); animatorSet.start(); } } } @Override public void onClick(View view) { } @Override public void onResume() { super.onResume(); notifyMyListView(); } @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } }