/* * Copyright (C) 2012 www.amsoft.cn * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.andbase.view.carousel; import java.util.List; import android.content.Context; import android.graphics.Bitmap; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout.LayoutParams; import com.ab.util.AbImageUtil; import com.ab.util.AbViewUtil; // TODO: Auto-generated Javadoc /** * © 2012 amsoft.cn * 名称:CarouselViewAdapter.java * 描述:自定义View适配的Carousel * * @author 还如一梦中 * @version v1.0 * @date:2013-8-22 下午4:05:09 */ public class CarouselViewAdapter extends BaseAdapter { /** The m context. */ private Context mContext; /** The m views. */ private List<View> mViews; /** The m reflected. */ private boolean mReflected = true; /** The m carousel image views. */ private CarouselItemView[] mCarouselItemViews = null; /** * Instantiates a new carousel view adapter. * * @param c the c * @param views the views * @param reflected 反射镜面效果 */ public CarouselViewAdapter(Context c,List<View> views,boolean reflected) { mContext = c; mViews = views; mReflected = reflected; setImages(); } /** * 描述:TODO. * * @version v1.0 * @return the count * @see android.widget.Adapter#getCount() * @author: amsoft.cn * @date:2013-8-22 下午4:07:39 */ public int getCount() { if (mViews == null){ return 0; }else{ return mViews.size(); } } /** * 描述:TODO. * * @version v1.0 * @param position the position * @return the item * @see android.widget.Adapter#getItem(int) * @author: amsoft.cn * @date:2013-8-22 下午4:07:39 */ public Object getItem(int position) { return position; } /** * 描述:TODO. * * @version v1.0 * @param position the position * @return the item id * @see android.widget.Adapter#getItemId(int) * @author: amsoft.cn * @date:2013-8-22 下午4:07:39 */ public long getItemId(int position) { return position; } /** * 描述:TODO. * * @version v1.0 * @param position the position * @param convertView the convert view * @param parent the parent * @return the view * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup) * @author: amsoft.cn * @date:2013-8-22 下午4:07:39 */ public View getView(int position, View convertView, ViewGroup parent) { convertView = mCarouselItemViews[position]; return convertView; } /** * Sets the images. */ public void setImages(){ mCarouselItemViews = new CarouselItemView[mViews.size()]; for(int i = 0; i< mViews.size(); i++){ final int index = i; View view = mViews.get(i); CarouselItemView itemView = new CarouselItemView(mContext); itemView.setIndex(i); if(mReflected){ Bitmap originalImage = AbImageUtil.view2Bitmap(view); ImageView imageView = new ImageView(mContext); LayoutParams mLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); mLayoutParams.gravity = Gravity.CENTER_HORIZONTAL; imageView.setScaleType(ScaleType.CENTER); imageView.setImageBitmap(AbImageUtil.toReflectionBitmap(originalImage)); itemView.addView(imageView,mLayoutParams); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //((AbActivity)mContext).showToast("点击了:"+index); } }); }else{ AbViewUtil.measureView(view); LayoutParams mLayoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); mLayoutParams.gravity = Gravity.CENTER_HORIZONTAL; itemView.addView(view,mLayoutParams); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //((AbActivity)mContext).showToast("点击了:"+index); } }); } mCarouselItemViews[i] = itemView; } } }