package com.cjj.cartoon.custom;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.cjj.cartoon.ComicImageViewActivity;
import com.cjj.cartoon.MainActivity;
import com.cjj.cartoon.R;
import com.cjj.cartoon.constants.Constant;
import com.cjj.cartoon.model.HeadViewDataModel;
import com.cjj.cartoon.util.ImageConfigBuilder;
import com.norbsoft.typefacehelper.TypefaceHelper;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.romainpiel.shimmer.Shimmer;
import com.romainpiel.shimmer.ShimmerTextView;
/**
* @author cjj
*/
public class TargetImageLayout extends FrameLayout{
private LinearLayout ll_view;
private RelativeLayout ll_over;
private ImageView mSelectImage,mSelectImage2;
private int DEFAULT_COUNT = 5;
private int mImageCount = DEFAULT_COUNT;
private int mImageHeght,mImageWidth;
private int AllImageWidth ;
private ImageView[] mImageView;
private int index = 0;
private List<HeadViewDataModel> list;
private ShimmerTextView tv_title;
public TargetImageLayout(Context context) {
super(context);
}
public TargetImageLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* set all image url
* @param imageUrl
*/
// public void setListImageData(String[] imageUrl)
// {
// this.imageUrl = imageUrl;
// init();
// }
/**
* set all image url
* @param imageUrl
*/
private Activity activity;
public void setListImageData(Activity activity,List<HeadViewDataModel> list)
{
this.list = list;
this.activity = activity;
init();
}
/**
* 初始化
*/
private void init() {
mImageView = new ImageView[mImageCount];
ll_view = (LinearLayout) inflaterView(R.layout.ll_view);
ll_over = (RelativeLayout) inflaterView(R.layout.over_view);
tv_title = (ShimmerTextView) ll_over.findViewById(R.id.tv_title);
if(Constant.checkVersionForShimmerEnable())
{
(new Shimmer()).start(tv_title);
}
mSelectImage = (ImageView) ll_over.findViewById(R.id.iv_target);
mSelectImage2 = (ImageView) ll_over.findViewById(R.id.iv_target2);
AllImageWidth = (getScreenWidth()- getResources().getDimensionPixelSize(R.dimen.stgv_margin)*2)/2*3;
mImageWidth = AllImageWidth/mImageCount;
mImageHeght = mImageWidth;
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(mImageWidth, mImageWidth);
LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(mImageWidth, mImageWidth);
RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(mImageWidth, mImageWidth);
lp2.setMargins(-mImageWidth/3, 0, 0, 0);
for(int i = 0; i<mImageCount; i++)
{
index = i;
if(i==0)
{
mImageView[i] = new ImageView(getContext());
mImageView[i].setLayoutParams(lp1);
}else
{
mImageView[i] = new ImageView(getContext());
mImageView[i].setLayoutParams(lp2);
}
mImageView[i].setPadding(1, 0, 1, 0);
mImageView[i].setBackgroundColor(Color.rgb(245, 245, 245));
mImageView[i].setScaleType(ScaleType.FIT_XY);
if(list.size()>0)
ImageLoader.getInstance().displayImage(list.get(i).url, mImageView[i],ImageConfigBuilder.USER_HEAD_HD_OPTIONS);
mImageView[i].setClickable(true);
mImageView[i].setTag(i);
// mImageView[i].setOnTouchListener(new OnTouchListener() {
//
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// switch(event.getAction())
// {
// case MotionEvent.ACTION_DOWN:
// Toast.makeText(getContext(), "down", 1).show();
// break;
// case MotionEvent.ACTION_MOVE:
// Toast.makeText(getContext(), "move", 1).show();
// break;
// case MotionEvent.ACTION_UP:
// Toast.makeText(getContext(), "up", 1).show();
// break;
// }
// return false;
// }
// });
mImageView[i].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int index = (Integer) v.getTag();
setLayoutTargerImage(index);
}
});
ll_view.addView(mImageView[i]);
}
tv_title.setLayoutParams(new RelativeLayout.LayoutParams(mImageWidth, LayoutParams.WRAP_CONTENT));
mSelectImage2.setLayoutParams(lp3);
mSelectImage2.setClickable(true);
mSelectImage.setLayoutParams(lp3);
mSelectImage.setClickable(true);
targetOnclick(0);
tv_title.setText(list.get(0).title);
ImageLoader.getInstance().displayImage(list.get(0).url, mSelectImage2);
this.addView(ll_view);
this.addView(ll_over);
}
private boolean isChange = false;
private Animation anim_in;
private Animation anim_out,anim_out2;
protected void setLayoutTargerImage(int index) {
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(mImageWidth, mImageWidth);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(mImageWidth, LayoutParams.WRAP_CONTENT);
if(index == mImageCount-1)
{
lp1.setMargins(index*mImageWidth*2/3-mImageHeght/3, 0, 0, 0);
lp2.setMargins(index*mImageWidth*2/3-mImageHeght/3, 0, 0, 0);
}else
{
lp1.setMargins(index*mImageWidth*2/3, 0, 0, 0);
lp2.setMargins(index*mImageWidth*2/3, 0, 0, 0);
}
mSelectImage2.setVisibility(View.VISIBLE);
anim_in = AnimationUtils.loadAnimation(getContext(), R.anim.image_fade_in);
anim_out = AnimationUtils.loadAnimation(getContext(), R.anim.image_fade_out);
tv_title.setLayoutParams(lp2);
tv_title.setText(list.get(index).title);
tv_title.startAnimation(anim_in);
if(isChange)
{
if(list.size()>0)
ImageLoader.getInstance().displayImage(list.get(index).url, mSelectImage2);
mSelectImage2.startAnimation(anim_in);
mSelectImage.startAnimation(anim_out);
anim_out.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
mSelectImage.setImageResource(R.drawable.tm);
mSelectImage.setVisibility(View.GONE);
}
});
mSelectImage2.setLayoutParams(lp1);
isChange = false;
// mSelectImage.setImageResource(R.drawable.tm);
}else
{
if(list.size()>0)
ImageLoader.getInstance().displayImage(list.get(index).url, mSelectImage);
mSelectImage.startAnimation(anim_in);
anim_out2 = anim_out;
mSelectImage.setVisibility(View.VISIBLE);
anim_out2.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
mSelectImage2.setImageResource(R.drawable.tm);
mSelectImage2.setVisibility(View.GONE);
}
});
mSelectImage2.startAnimation(anim_out2);
mSelectImage.setLayoutParams(lp1);
isChange = true;
// mSelectImage2.setImageResource(R.drawable.tm);
};
targetOnclick(index);
}
private void targetOnclick(final int index2) {
mSelectImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sloveTargetOnclick(index2);
}
});
mSelectImage2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sloveTargetOnclick(index2);
}
});
}
protected void sloveTargetOnclick(int index2) {
// Intent intent = new Intent(getContext(), MainActivity.class);
// intent.putExtra("link", list.get(index2).link);
// getContext().startActivity(intent);
Intent intent = new Intent(getContext(), ComicImageViewActivity.class);
Bundle bundle = new Bundle();
bundle.putString("url", list.get(index2).link);
bundle.putString("title", list.get(index2).title);
intent.putExtras(bundle);
activity.startActivity(intent);
activity.overridePendingTransition(R.anim.right, R.anim.hold);
}
/**
*装载器
* @param layoutId
* @return
*/
private View inflaterView(int layoutId)
{
return LayoutInflater.from(getContext()).inflate(layoutId,null);
}
/**
* 获得屏幕的宽度
* @return
*/
public int getScreenWidth()
{
WindowManager wm = (WindowManager) getContext().getSystemService(
Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthPixels;
}
}