浏览 2784 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-19
先上个效果图~
思路是这样的,功能方面: 首先这个是个左右循环的Gallery(其实是Integer.MAX_VALUE = 2147483647 这么多的个啦,接近无限了)。 这个网上有很多,不再赘述。代码里面也有,可以直接下载~ 然后就是Gallery的样式,我这里 设置成无阴影的,间距 android:spacing="0dip"。 最后就是下面的指示条了,我使用FrameLayout布局,里面的指示点 radiobuttion.(因为只要一个是点亮的,用于指示当前位置,所以在一个group中)
下面是重要代码:
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:layout_width="fill_parent" android:layout_height="150dip" > <com.test.AdvGallery android:fadingEdge="none" android:id="@+id/home_advs_gallery" android:spacing="0dip" android:layout_width="fill_parent" android:layout_height="150dip" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="20dip" android:layout_gravity="bottom" android:background="#55999999" android:gravity="center" android:orientation="horizontal" > <RadioGroup android:gravity="center" android:id="@+id/home_advs_gallery_mark" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > </RadioGroup> </LinearLayout> </FrameLayout> </LinearLayout>
自定义Gallery,为了解决Gallery拖拽滑动过快:
public class AdvGallery extends Gallery { public AdvGallery(Context context) { super(context); // TODO Auto-generated constructor stub } public AdvGallery(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //返回false 解决Gallery拖拽滑动过快 return false; } @Override public void setUnselectedAlpha(float unselectedAlpha) { // TODO Auto-generated method stub unselectedAlpha = 1.0f; super.setUnselectedAlpha(unselectedAlpha); }
adapter中的 getview方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ImageView imageView = new ImageView(context); String curr_URL = imgURL.get(position%imgURL.size()); imageView.setTag(curr_URL); Drawable cachedImage = asyncImageLoader.loadDrawable(context,curr_URL,new ImageCallback1() { @Override public void imageLoaded(Drawable imageDrawable, String imageUrl) { ImageView imageViewByTag = (ImageView) gallery.findViewWithTag(imageUrl); if (imageViewByTag != null && imageDrawable != null ) { imageViewByTag.setImageDrawable(imageDrawable); notifyDataSetChanged(); } } }); if (cachedImage != null) { imageView.setImageDrawable(cachedImage); }else{ imageView.setImageResource(R.drawable.ic_launcher); } // 设置边界对齐 imageView.setAdjustViewBounds(true); imageView.setLayoutParams(new Gallery.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); //设置比例类型 // imageView.setScaleType(ImageView.ScaleType.FIT_XY); return imageView; }
main中的oncreate:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); _radioGroup = (RadioGroup) findViewById(R.id.home_advs_gallery_mark); _adv_Gallery = (Gallery) findViewById(R.id.home_advs_gallery); _advGalleryAdapter = new AdvGalleryAdapter(ADV_GalleryActivity.this,_adv_imgURL,_adv_Gallery); _adv_Gallery.setAdapter(_advGalleryAdapter); _adv_Gallery.setSelection(Integer.MAX_VALUE >> 1); _adv_Gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub _radioGroup.check(arg2%_adv_imgURL.size()); //Gallery焦点图片改变时 更改RadioGroup } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); //图片地址 _adv_imgURL.add("http://www.baidu.com/img/baidu_sylogo1.gif"); _adv_imgURL.add("http://www.iteye.com/images/logo.gif?1308833136"); _adv_imgURL.add("http://csdnimg.cn/www/images/csdnindex_logo.gif"); for(int i=0;i<_adv_imgURL.size();i++){ RadioButton rb = new RadioButton(ADV_GalleryActivity.this); rb.setId(i); rb.setButtonDrawable(R.drawable.adv_gallery_mark_selector); rb.setClickable(false); _radioGroup.addView(rb); } }
由于代码比较多,放上源码,希望大家能用到~!
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |