`
libo19881179
  • 浏览: 270433 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【so easy~】 Gallery 模仿Flash广告栏~!附源码

阅读更多


先上个效果图~

http://androiddada.iteye.com/


思路是这样的,功能方面:

首先这个是个左右循环的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);
		}
		
    }


http://androiddada.iteye.com/

由于代码比较多,放上源码,希望大家能用到~!

 

  • 大小: 141.4 KB
分享到:
评论
9 楼 我姓张 2014-07-07  
  
8 楼 我姓张 2014-07-07  
 
7 楼 mikola 2013-02-23  
这个很好啊.谢谢.
6 楼 anson86s 2012-09-10  
太厲害了!!感謝樓主的分享
5 楼 yanhua_it 2012-04-09  
下面那个radiogroup之间的间距应如何改变呢,貌似间距太宽了,有什么好的方法可以解决吗?
4 楼 warnerhit 2012-02-29  
libo19881179 写道
warnerhit 写道
灰常感谢。我遇到一个问题
放上这句:imageView.setScaleType(ImageView.ScaleType.FIT_XY); 后就可以全屏,但是无法缩放图片了(扩展了Gallery)

你说的不太清楚,缩放图片?

是的,对Gallery显示的ImageView重写实现了缩放和拖拽功能,在getView()方法中返回重写的ImageView,如果设置imageView.setScaleType(ImageView.ScaleType.FIT_XY); 话,就不能缩放了,不写这句代码的话则可以。
3 楼 yangjiantong 2012-02-09  
如何让图片每隔2秒自动切换呢?
2 楼 libo19881179 2011-12-22  
warnerhit 写道
灰常感谢。我遇到一个问题
放上这句:imageView.setScaleType(ImageView.ScaleType.FIT_XY); 后就可以全屏,但是无法缩放图片了(扩展了Gallery)

你说的不太清楚,缩放图片?
1 楼 warnerhit 2011-12-22  
灰常感谢。我遇到一个问题
放上这句:imageView.setScaleType(ImageView.ScaleType.FIT_XY); 后就可以全屏,但是无法缩放图片了(扩展了Gallery)

相关推荐

    [] - 2022-09-27 Spring Boot + minio 实现高性能存储服务,So Easy~!.pdf

    互联网资讯,技术简介,IT、AI技术,人工智能

    安卓Android源码——中英文电子词典源码(soeasy).zip

    【标题】"安卓Android源码——中英文电子词典源码(soeasy).zip" 提供的是一个基于Android平台的中英文电子词典应用的源代码,名为"soeasy",这是一款专为Android设备设计的软件,旨在帮助用户方便快捷地查找和学习...

    SoEasy办公效率平台

    "SoEasy办公效率平台"是一款专为提升个人和团队办公效率设计的应用软件。这款平台集成了多种实用功能,旨在简化日常办公任务,提高工作效率。作为一款"办公好助手",它可能包含了文档管理、项目协作、日程规划、任务...

    Android源码——中英文电子词典源码(so easy).zip

    【Android源码——中英文电子词典源码(so easy)】 这个压缩包包含了一个基于Android平台的中英文电子词典应用的源代码。开发者通过这份源码可以深入理解Android应用开发,特别是针对语言学习应用的开发技术。下面...

    Android应用设计源码-中英文电子词典源码so easy

    本项目“Android应用设计源码-中英文电子词典源码so easy”提供了这样一个实例,对于初学者或希望提升Android技能的开发者来说,是一个宝贵的资源。 首先,我们要了解Android应用的基本结构。一个标准的Android应用...

    Android中英文电子词典源码(so easy).zip项目安卓应用源码下载

    Android中英文电子词典源码(so easy).zip项目安卓应用源码下载Android中英文电子词典源码(so easy).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android中英文电子词典源码(so easy).rar

    这个名为"Android中英文电子词典源码(so easy)"的项目,显然是为了简化这个过程,让开发者能够快速上手。下面将详细解析该项目中的关键知识点。 首先,我们需要了解Android应用的基本结构。一个典型的Android应用...

    Android源码——中英文电子词典源码(so easy).7z

    【标题】"Android源码——中英文电子词典源码(so easy).7z" 涉及的是一个Android应用程序开发项目,该项目旨在创建一个功能完善的中英文电子词典。开发者通过这个源码可以深入理解Android应用的构建过程,特别是...

    EasyFlash.zip

    标题 "EasyFlash.zip" 涉及到的是一个开源框架 EasyFlash 的移植,该框架专为 STM32 微控制器的HAL库开发设计,适用于裸机编程环境。EasyFlash 提供了非易失性存储解决方案,能够方便地在STM32的闪存中进行数据的...

    简单图床-EasyImage2.0源码 图片网站上传源码源码资源下载整理.zip

    【简单图床-EasyImage2.0源码】是一个用于创建图片上传网站的源码资源,它提供了方便快捷的方式来托管用户上传的图片。这个源码主要用于开发者或个人想要搭建一个自己的图片存储服务,以替代公共图床或者第三方云...

    Office资源宝库SoEasy办公效率平台 v4.0.11.5.exe

    SoEasy办公效率平台是一款办公人员必备工具。提供最易用、最集中、最专业OFFICE资源。   SoEasy办公效率平台功能: 1、包含Office中多个组件海量培训视频(Word,Excel,PowerPoint,Outlook等)。 2、文档及PPT...

    soeasy软件

    SoEasy办公效率平台,为提供办公人员办公必备工具,是全国最全面、最专业、最实用的办公辅助工具,专为提升办公能力,及办公效率的学习平台,由数名微软金牌讲师、资深顾问等组成的专家团队,以快速提升个人工作效率...

    JQuery Easy UI源码

    JQuery Easy UI 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,如对话框、表格、下拉菜单、树形结构等,帮助开发者快速构建用户界面。这个框架的源码解析将帮助我们深入理解其内部工作原理,优化...

    菜单UI系统源码UMenu Gallery

    unity 菜单UI系统源码UMenu Gallery UMenu Gallery is a functional design Menu interface with a gallery effect, the UI design is highly customizable and pretty easy to use, You can edit it "on the fly" ...

    温度报警器SOEASY2010说明书

    温度报警器SOEASY2010说明书

    物联网So Easy 基于Blynk平台的IOT项目实践 配套资源

    物联网So Easy 基于Blynk平台的IOT项目实践 配套资源 本书是经典的、畅销的Spring学习和实践指南。第5版针对Spring 5进行了全面更新。第5版涵盖了Spring 5.0和Spring Boot 2.0里程碑式的更新。 全书分为5个部分,...

    STM32F103ZET6+FreeRTOS V8.2.3+kfifo(巧夺天工)+EasyFlash

    STM32F103ZET6+FreeRTOS V8.2.3+kfifo(巧夺天工)+EasyFlash,移植 Linux 的 巧夺天工 的KFIFO 到FreeRTOS 环境, 移植 easyflash 到 FreeRTOS。

    Easy Messenger 源码

    《Easy Messenger 源码解析:打造无需服务器的局域网通信神器》 在现代通讯技术日新月异的时代,一款名为"Easy Messenger"的应用以其独特的功能吸引了人们的注意。这款应用主打无需服务器的局域网通信,具备文件...

Global site tag (gtag.js) - Google Analytics