Android Gallery广告(仿网易)

来源:互联网 发布:风云无双装备升级数据 编辑:程序博客网 时间:2024/06/06 07:37

看这篇博文前,推荐先看本博文的姊妹篇(点击即可)  

Android下拉刷新(仿网易)

完美PopupWindow(记住用户名模拟)

      Android系统提供了一个Gallery画廊控件,在项目很多时候都会用到Gallery,比如新浪首页的广告,网易看客户端首页等随处可见,今天我自己定义了一个仿网易的Gallery与大家共享。

     首先请看效果图:

                                         


代码:

package com.jefry.gallery;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.FrameLayout;import android.widget.Gallery;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;/** * @author jefry * */public class MyGallery extends FrameLayout {List<Showing> showings = new ArrayList<Showing>();private static final double GALLERY_IMAGE_HORIZONTAL_RATIO = 1.0;private static final double GALLERY_IMAGE_VERTICAL_RATIO = 1.0;private static final int GALLERY_SPACING = 2;    private Context mContext;    private PromotionImages promotionImages;    private LinearLayout mBottomLayout;    private TextView tips;    private int mPcount;    private ImageView[] icons;public MyGallery(Context context) {super(context);}public MyGallery(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;promotionImages = new PromotionImages(context);LayoutParams layoutParams = new LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT,android.view.ViewGroup.LayoutParams.FILL_PARENT);layoutParams.bottomMargin = 20;this.addView(promotionImages, layoutParams);LayoutInflater inflater = ((Activity) context).getLayoutInflater();View indicator = inflater.inflate(R.layout.promotion_hint,null);this.addView(indicator);//mBottomLayout = (LinearLayout) indicator.findViewById(R.id.promotion_index_layout);    tips  = (TextView) indicator.findViewById(R.id.promotion_tip);    initBottomIcons();}class PromotionImages extends Gallery {       PromotionImagesAdapter promotionAdapter;public PromotionImages(Context context) {super(context);this.setSpacing(GALLERY_SPACING);promotionAdapter = new PromotionImagesAdapter(context);this.setAdapter(promotionAdapter);this.setOnItemSelectedListener(new OnItemSelectedListener() {public void onItemSelected(AdapterView<?> parent, View view,int position, long id) { update(position);}public void onNothingSelected(AdapterView<?> parent) {}});}private final void update(int selected) {    tips.setText(showings.get(selected).getText());for (int i = 0; i < mPcount; i++) {   if (selected == i) {icons[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.promotion_select_focus));} else {icons[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.promotion_select_default));    }  }    }}   private final void initBottomIcons() { mPcount = showings.size(); icons = new ImageView[mPcount]; mBottomLayout.removeAllViews(); mBottomLayout.setWeightSum(mPcount);//for (int i = 0; i < mPcount; i++) {icons[i] = new ImageView(mContext);if(i == 0) icons[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.promotion_select_focus));else icons[i].setBackgroundDrawable(getResources().getDrawable(R.drawable.promotion_select_default));mBottomLayout.addView(icons[i]);}}private final class PromotionImagesAdapter extends BaseAdapter {public PromotionImagesAdapter(Context context) {Resources res = getResources();Bitmap bmp = BitmapFactory.decodeResource(res,R.drawable.test2);Showing show1 = new Showing();show1.setBitmap(bmp);show1.setText("jefry_1");Bitmap bmp1 = BitmapFactory.decodeResource(res,R.drawable.test1);Showing show2 = new Showing();show2.setBitmap(bmp1);show2.setText("jefry_2");                Bitmap bmp3 = BitmapFactory.decodeResource(res,R.drawable.test3);Showing show3 = new Showing();show3.setBitmap(bmp3);show3.setText("jefry_3");showings.add(show1);showings.add(show2);showings.add(show3);}public int getCount() {return showings.size();}public Object getItem(int position) {return position;}public long getItemId(int position) {return position;}public View getView(final int position, final View convertView,ViewGroup parent) {//System.out.println("showings = " + showings.size());                //System.out.println("position=" + position);final Showing promotion = showings.get(position);ImageView promotionImage = (ImageView) convertView; if (promotionImage == null) {promotionImage = new ImageView(mContext);System.out.println("postion=" + position + ",promotion.getBitmap()1 = "+ promotion.getBitmap());}int width = (int) (MyGallery.this.getWidth() * GALLERY_IMAGE_HORIZONTAL_RATIO);int height = (int) (MyGallery.this.getHeight() * GALLERY_IMAGE_VERTICAL_RATIO);promotionImage.setLayoutParams(new Gallery.LayoutParams(width,height));promotionImage.setScaleType(ImageView.ScaleType.CENTER);promotionImage.setScaleType(ImageView.ScaleType.FIT_XY);System.out.println("postion=" + position + ",promotion.getBitmap() = "+ promotion.getBitmap());promotionImage.setImageBitmap(promotion.getBitmap());return promotionImage;}}}

 

由于篇幅原因,我只贴出了部分代码。如果觉得上面的代码看起来比较繁琐,需要这个Demo项目源码的同志们,就留下邮箱。

原创粉丝点击