package com.roboo.like.netease.adapter; import java.util.LinkedList; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.Animator.AnimatorListener; import com.nineoldandroids.animation.AnimatorSet; import com.nineoldandroids.animation.ObjectAnimator; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.roboo.like.netease.R; import com.roboo.like.netease.model.News; public class MainListViewAdapter extends BaseAdapter { private Context context; private LinkedList<News> data; private ImageLoader mImageLoader; public MainListViewAdapter(Context context, LinkedList<News> data, ImageLoader imageLoader) { super(); this.context = context; this.data = data; this.mImageLoader = imageLoader; this.mImageLoader.init(ImageLoaderConfiguration.createDefault(context)); } @Override public int getCount() { return null == data ? 0 : data.size(); } @Override public Object getItem(int position) { return null == data ? null : data.get(position); } @Override public long getItemId(int position) { return position; } /** * TODO getView */ public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; News news = data.get(position); int screenWidth = context.getResources().getDisplayMetrics().widthPixels; if (null == convertView) { holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.news_list_item, null); holder.mIVImage = (ImageView) convertView.findViewById(R.id.iv_image); holder.mTVTitle = (TextView) convertView.findViewById(R.id.tv_title); holder.mTVSubTitle = (TextView) convertView.findViewById(R.id.tv_sub_title); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); ObjectAnimator translateX = ObjectAnimator.ofFloat(convertView, "translationX",screenWidth/3, screenWidth ); AnimatorSet set = new AnimatorSet(); set.play(translateX); set.setStartDelay(0); set.setDuration( 0); set.start(); } holder.mTVTitle.setText(news.getTitle()); holder.mTVSubTitle.setText(news.getSubTitle()); DisplayImageOptions options = new DisplayImageOptions.Builder().showStubImage(R.drawable.ic_stub).showImageForEmptyUri(R.drawable.ic_empty) .showImageOnFail(R.drawable.ic_error).cacheInMemory().cacheOnDisc().bitmapConfig(Bitmap.Config.RGB_565).build(); mImageLoader.displayImage(news.getSrc(), holder.mIVImage, options); ObjectAnimator scaleX = ObjectAnimator.ofFloat(convertView, "scaleX", 0f, 1f); ObjectAnimator scaleY = ObjectAnimator.ofFloat(convertView, "alpha", 0f, 1f); AnimatorSet set = new AnimatorSet(); // set.playTogether(new Animator[]{scaleX,scaleY}); ObjectAnimator translateX = ObjectAnimator.ofFloat(convertView, "translationX", screenWidth, 0f); set.play(translateX); set.setStartDelay(100); set.setDuration(300); set.start(); set.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animator animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animator animation) { // TODO Auto-generated method stub } @Override public void onAnimationCancel(Animator animation) { // TODO Auto-generated method stub } }); return convertView; } private class ViewHolder { public TextView mTVTitle; public TextView mTVSubTitle; public ImageView mIVImage; } public LinkedList<News> getData() { return data; } }