Android幻灯片式图片浏览器
来源:互联网 发布:手机指纹锁软件下载 编辑:程序博客网 时间:2024/05/01 18:51
本文转自:http://blog.csdn.net/bear_huangzhen/article/details/24232029
今天我们通过使用Android提供给我们的现有空间Gallery和ImageSwitcher来实现一个幻灯片式的图片浏览器。
(1)首先我们新建一个工程,修改主布局文件activity_main.xml内容如下:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical" >
- <ImageSwitcher
- android:id="@+id/image_switcher"
- android:layout_width="wrap_content"
- android:layout_height="0dip"
- android:layout_weight="2"
- android:paddingTop="30dip" />
- <!--
- android:layout_weight 详细解释:按比例显示LinearLayout内各个子控件,
- 需设置android:layout_width="0dp",
- 如果为竖直方向的设置android:layout_height="0dp"。
- 在这种情况下某子个控件占用LinearLayout的比例为:
- 本控件weight值 / LinearLayout内所有控件的weight值的和。
- android:spacing 设置图片的间距
- android:unselectedAlpha 设置为选中条目的透明度
- -->
- <Gallery
- android:id="@+id/gallery"
- android:layout_width="fill_parent"
- android:layout_height="0dip"
- android:layout_weight="1"
- android:spacing="5dip"
- android:unselectedAlpha="0.6" />
- </LinearLayout>
- public class MainActivity extends Activity {
- // 声明并静态初始化图片id数组
- private int[] imageIds = { R.drawable.img01, R.drawable.img02,
- R.drawable.img03, R.drawable.img04, R.drawable.img05,
- R.drawable.img06, R.drawable.img07, R.drawable.img08,
- R.drawable.img09, R.drawable.img10, R.drawable.img11,
- R.drawable.img12 };
- // 声明一个Gallery视图控件变量
- private Gallery gallery;
- // 声明一个ImageSwitcher视图控件变量
- private ImageSwitcher imageSwitcher;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 获取视图控件对象
- gallery = (Gallery) findViewById(R.id.gallery);
- imageSwitcher = (ImageSwitcher) findViewById(R.id.image_switcher);
- // 设置动画效果
- imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.fade_in));
- imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
- android.R.anim.fade_out));
- // 为imageSwitcher设置ViewFactory对象
- imageSwitcher.setFactory(new ViewFactory() {
- @Override
- public View makeView() {
- // 初始化一个ImageView对象
- ImageView imageView = new ImageView(MainActivity.this);
- // 设置保持纵横比居中缩放图像
- imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
- // 设置imageView的宽高
- imageView.setLayoutParams(new FrameLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- return imageView;
- }
- });
- //初始化一个MainGalleryAdapter对象
- MainGalleryAdapter adapter = new MainGalleryAdapter();
- //将适配器与gallery关联起来
- gallery.setAdapter(adapter);
- //初始选中中间的图片
- gallery.setSelection(imageIds.length/2);
- gallery.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- //在ImageSwitcher中显示选中的图片
- imageSwitcher.setImageResource(imageIds[position]);
- }
- });
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- /**
- * 定义Gallery的数据适配器MainGalleryAdapter
- */
- class MainGalleryAdapter extends BaseAdapter {
- /**
- * 获得数量
- */
- @Override
- public int getCount() {
- return imageIds.length;
- }
- /**
- * 获得当前选项
- */
- @Override
- public Object getItem(int position) {
- return getResources().getDrawable(imageIds[position]);
- }
- /**
- * 获得当前选项的id
- */
- @Override
- public long getItemId(int position) {
- return position;
- }
- /**
- * 获得当前选项的视图
- */
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- //初始化一个ImageView对象
- ImageView imageView = new ImageView(MainActivity.this);
- //设置缩放方式
- imageView.setScaleType(ImageView.ScaleType.FIT_XY);
- //设置ImageView的宽高
- imageView.setLayoutParams(new Gallery.LayoutParams(180, 135));
- //设置IamgeView显示的图片
- imageView.setImageResource(imageIds[position]);
- /**
- * 设置ImageView背景,这里背景使用的是android提供的一种背景风格
- * 在values/attr.xml文件中需要一下内容
- * <declare-styleable name="Gallery">
- * <attr name="android:galleryItemBackground" />
- * </declare-styleable>
- */
- TypedArray typedArray = MainActivity.this
- .obtainStyledAttributes(R.styleable.Gallery);
- int mGalleryItemBackground = typedArray.getResourceId(
- R.styleable.Gallery_android_galleryItemBackground, 0);
- imageView.setBackgroundResource(mGalleryItemBackground);
- //返回ImageView对象
- return imageView;
- }
- }
- }
(3)我们看一下程序运行后的效果图:
(4)附上完整的android源码:
Android幻灯片式的图片浏览器 0 0
- Android幻灯片式图片浏览器
- Android幻灯片式图片浏览器
- 幻灯片式图片浏览器
- 幻灯片式图片浏览器
- 【Android开发】范例2-实现幻灯片式图片浏览器
- 实例4:幻灯片式图片浏览器
- Gallery实现幻灯片式的图片浏览器
- 幻灯片模式图片浏览器
- 菜鸟Android学习之路25——幻灯片式图片浏览器
- JS 控制图片在浏览器上幻灯片式自动播放
- 我的Android进阶之旅------>Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器
- android幻灯片
- android图片左右滚动类似翻页切换幻灯片效果
- 幻灯片似的自动显示文件下的图片 android
- android 仿系统图片播放器中的幻灯片播放
- Android图片浏览器
- android 图片浏览器 demo
- android高仿微信图片浏览器
- sqlserver换版本之后的操蛋事情备忘
- 编程杂项
- vxworks下的串口测试程序
- 办公系统的学习(手动调用在线人数减一;两个打开页面如何传值,等)
- 微软专利:使用者可以“隔空”操控手机和平板电脑
- Android幻灯片式图片浏览器
- opencv2.4.6版本下使用sift等特征
- 计算机网络基础(三)子网划分及子网掩码计算方法
- 二进制与三进制在IT笔试中的妙用
- iOS如何利用Delegate来实现两个UIView之间的传值
- android.mk说明
- 1.1 简单工厂(Simple Factory)模式
- cocos2d-x的TestCpp分析之TransitionsTest
- ASP.NET优化