`

Android ImageSwitcher和Gallery 综合使用

阅读更多

一个简易的相册

功能描述: 点击按钮进入下一屏,在屏幕上面展示一个大图,在屏幕的下面是一组可以滚动的图片,点击滚动的图片可以显示在上面的控件中。

效果图如下:

 

 

 

 

开发环境:eclipse3.4.2  AndroidSDK2.0 ADT0.9.7

代码:

1.MainActivity 单击按钮时,跳转到 ImageShowActivity

package com.small.photos;

import com.small.photos.R;
import android.widget.*;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity {

	OnClickListener listener0 = null;
	Button button0;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 单击按钮跳转到ImageShowActivity
		listener0 = new OnClickListener() {
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this,
						ImageShowActivity.class);
				startActivity(intent);
			}
		};

		button0 = (Button) findViewById(R.id.image_show_button);
		button0.setOnClickListener(listener0);
	}

}

 2. main.xml  定义入口按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
 <Button android:id="@+id/image_show_button"  
            android:text="ImageSwitcher Gallery"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content">  
    </Button>  
</LinearLayout>

 3.image_show.xml 

    ImageSwitcher是用来图片显示那块区域的控件  Gallery 是来控制底下那个图标列表索引用的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
  
  <ImageSwitcher android:id="@+id/ImageSwitcher01"
     android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_alignParentTop="true"
  	android:layout_alignParentLeft="true">
  	</ImageSwitcher>
  	
  	
   <Gallery 
     android:id="@+id/gallery"
     android:background="#55000000"
     android:layout_width="fill_parent"
     android:layout_height="60dp"
     android:layout_alignParentBottom="true"
     android:layout_alignParentLeft="true"	
     android:gravity="center_vertical"
     android:spacing="16dp" />
  


</RelativeLayout>

 4.ImageShowActivity

 R.drawable.sample_thumb_0 为图片的标识

图片放在res/drawable/目录下  图片名称为sample_thumb_0.gif

package com.small.photos;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageShowActivity extends Activity implements ViewFactory,
		OnItemSelectedListener {
	/** Called when the activity is first created. */
	ImageSwitcher mSwitcher;
	private Integer[] mThumbIds = { R.drawable.sample_thumb_0,
			R.drawable.sample_thumb_1, R.drawable.sample_0, R.drawable.sample_1 };

	private Integer[] mImageIds = { R.drawable.sample_thumb_0,
			R.drawable.sample_thumb_1, R.drawable.sample_0, R.drawable.sample_1 };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		setContentView(R.layout.image_show);
		setTitle("ImageShowActivity");

		mSwitcher = (ImageSwitcher) findViewById(R.id.ImageSwitcher01);
		// 系统的anim中的fade_in.xml
		mSwitcher.setFactory(this);
		mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
				android.R.anim.fade_in));
		mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
				android.R.anim.fade_out));

		Gallery g = (Gallery) findViewById(R.id.gallery);
		// 为缩略图浏览器指定一个适配器
		g.setAdapter(new ImageAdapter(this));
		// 响应 在缩略图列表上选中某个缩略图后的 事件
		g.setOnItemSelectedListener(this);

	}

	@SuppressWarnings("unchecked")
	public void onItemSelected(AdapterView parent, View v, int position, long id) {
		mSwitcher.setImageResource(mImageIds[position]);
	}

	@SuppressWarnings("unchecked")
	public void onNothingSelected(AdapterView parent) {
	}

	@Override
	public View makeView() {
		ImageView i = new ImageView(this);
		i.setBackgroundColor(0xFF000000);
		i.setScaleType(ImageView.ScaleType.FIT_CENTER);
		i.setLayoutParams(new ImageSwitcher.LayoutParams(
				LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
		return i;
	}

	public class ImageAdapter extends BaseAdapter {
		private Context mContext;

		public ImageAdapter(Context c) {
			mContext = c;
		}

		public int getCount() {
			return mThumbIds.length;
		}

		public Object getItem(int position) {
			return position;
		}

		public long getItemId(int position) {
			return position;
		}
        
		//getView方法动态生成一个ImageView,然后利用setLayoutParams、setImageResource、
		//setBackgroundResource分别设定图片大小、图片源文件和图片背景。当图片被显示到当前
		//屏幕的时候,这个函数就会被自动回调来提供要显示的ImageView
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView i = new ImageView(mContext);

			i.setImageResource(mThumbIds[position]);
			i.setAdjustViewBounds(true);
			i.setLayoutParams(new Gallery.LayoutParams(
					LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
			i.setBackgroundResource(R.drawable.picture_frame);
			return i;
		}

	}

}

  5.AndroidManifest.xml  标识MainActivity为一个程序的开始

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.small.photos"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:label="@string/app_name">
        <activity android:name=".ImageShowActivity"
                  android:label="@string/app_name">
            
        </activity>

    <activity android:name="MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
</activity>
</application>


</manifest> 

 

 基本上就是这些了,然后启动吧!

 

分享到:
评论

相关推荐

    风力发电机控制系统仿真设计 风力发电系统动态模拟仿真 光伏发电系统 本设计主要依据风力发电机组的控制目标和控制策略,通过使用电力系统动态模拟仿真软件PSCAD EMTDC,建立变桨距风力发电机组控制系

    风力发电机控制系统仿真设计 风力发电系统动态模拟仿真 光伏发电系统 本设计主要依据风力发电机组的控制目标和控制策略,通过使用电力系统动态模拟仿真软件PSCAD EMTDC,建立变桨距风力发电机组控制系统的模型。 为了验证控制系统模型的可用性,建立风力发电样例系统模型,对样例系统进行模拟仿真,并对所得的仿真结果进行了分析,从而证实了风力发电机组控制系统模型的可用性,然后得出了它的控制方法。

    安卓项目源码Androidafinal开源框架实例源码

    安卓项目源码Android afinal开源框架实例源码提取方式是百度网盘分享地址

    C4网络技术挑战赛B-EP1赛道解决方案与实践.zip

    C4网络技术挑战赛B-EP1赛道解决方案与实践.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 6、欢迎下载,沟通交流,互相学习,共同进步!

    Bandgap 带隙基准,带启动电路,带版图 适合新手练习 主要包含以下仿真内容: 温度特性曲线 电源抑制比psrr仿真 稳定性仿真,整个环路的稳定性 噪声仿真,可以知道噪声的主要贡献来源 输出电压精

    Bandgap 带隙基准,带启动电路,带版图 适合新手练习 主要包含以下仿真内容: 温度特性曲线 电源抑制比psrr仿真 稳定性仿真,整个环路的稳定性 噪声仿真,可以知道噪声的主要贡献来源 输出电压精度仿真 [cool][cool]testbench有单独的仿真状态,直接安装可以运行 性价比高,可以买回去练一练

    工程机器人大赛(含全部参赛源码及资料).zip

    工程机器人大赛(含全部参赛源码及资料).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 6、欢迎下载,沟通交流,互相学习,共同进步!

    汽车中间件市场调研报告:2023年全球汽车中间件市场销售额达到了78亿美元

    汽车中间件市场调研报告:2023年全球汽车中间件市场销售额达到了78亿美元 在数字化转型的浪潮中,汽车中间件作为连接硬件与软件的关键桥梁,正引领着汽车行业的新一轮变革。随着全球汽车产业的快速发展,中间件市场规模持续扩大,展现出前所未有的增长潜力。然而,面对复杂多变的市场环境和不断涌现的新技术,企业如何精准把握市场脉搏,实现可持续发展?本文将深入探讨全球及中国汽车中间件市场的现状、趋势及竞争格局,为您揭示咨询的重要性。 市场概况: 根据QYResearch(恒州博智)的统计及预测,2023年全球汽车中间件市场销售额达到了78亿美元(约7803百万美元),预计2030年将达到156亿美元(约15630百万美元),年复合增长率(CAGR)为10.3%(2024-2030)。这一数据不仅彰显了中间件市场的强劲增长动力,也预示着未来巨大的市场空间。 技术创新与趋势: 随着自动驾驶、车联网等技术的不断发展,汽车中间件正面临着前所未有的技术挑战与机遇。新一代中间件需要具备更高的实时性、更低的延迟以及更强的数据处理能力,以满足复杂多变的汽车应用场景。同时,云计算、大数据、人工智能等技术的融合应用,将进

    基于梯度方向的VVC帧内编码中CU划分早终止算法研究与实现

    内容概要:本文探讨了一种在VVC(Versatile Video Coding)帧内编码中基于梯度方向特性的早期终止算法,旨在减少不必要的搜索从而优化计算复杂度。文中分析了视频编码的统计特征以及不同方向梯度的影响来指导CU(Coding Unit)分割决策流程。此外还介绍了算法的具体操作步骤和逻辑分支条件。实验结果显示该方法能够显著节省编码时间,平均达到约38%-51%,尽管BD-rate有所牺牲但总体上提升了效率并保持了较好的编码性能。 适合人群:从事多媒体通信系统开发或者图像视频压缩技术领域的研究人员和工程师,特别是那些对高分辨率影像处理感兴趣的专业人士。 使用场景及目标:本研究适用于寻求提高VVC标准下编码速度而不大幅度降低质量的应用环境中,如高清或超高清实时流媒体传输和服务提供者希望加快转码过程的情况。 其他说明:作者感谢中国国家重点研发计划和其他项目对于此项工作的支持,并提供了丰富的参考文献列表用于进一步的研究。

    占空比可调方波.ms14

    占空比可调方波.ms14

    基于matlab的单指针百分数表盘识别系统 表盘识别基于计算机视觉设计,基于霍夫变算法,含GUI界面 步骤:灰度化,二值化,反色,细化,霍夫变,提取峰值,检测识别 功能:识别单指针仪表盘,显示仪表

    基于matlab的单指针百分数表盘识别系统 【表盘识别】基于计算机视觉设计,基于霍夫变算法,含GUI界面 步骤:灰度化,二值化,反色,细化,霍夫变,提取峰值,检测识别 功能:识别单指针仪表盘,显示仪表指针角度以及仪表示数,显示二值化图像,灰度化图像,变域图像。 代码结构清晰,含有注释,运算速度快,可扩展。

    简单的HTML和JavaScript代码,跨年倒计时html代码

    跨年倒计时html代码

    级联H桥储能变器,级联H桥整流器 采用栽波移相调制,功率外环电流内环控制; 相内SOC为基波均衡分量注入,相间SOC为零序电压注入法,可在短时间内使得SOC达到平衡, 下图为2单元五电平,可做多模块级

    级联H桥储能变器,级联H桥整流器 采用栽波移相调制,功率外环电流内环控制; 相内SOC为基波均衡分量注入,相间SOC为零序电压注入法,可在短时间内使得SOC达到平衡, 下图为2单元五电平,可做多模块级联,H桥整流等 提供参考文献,,Matlab为2018b

    adaceshiwaifa,adaceshiwaifa,adaceshiwaifa,adaceshiwaifa

    adaceshiwaifa,adaceshiwaifa,adaceshiwaifa,adaceshiwaifa

    光伏交直流混合微电网双下垂控制离网(孤岛)模式Matlab仿真模型 ①交直流混合微电网结构: 1.直流微电网,由光伏板+Boost变器组成,最大输出功率10 kW 2.交流微电网,由光伏板+Boos

    光伏交直流混合微电网双下垂控制离网(孤岛)模式Matlab仿真模型 ①交直流混合微电网结构: 1.直流微电网,由光伏板+Boost变器组成,最大输出功率10 kW。 2.交流微电网,由光伏板+Boost变器+LCL逆变器组成,最大输出功率15 kW。 3.互联变器(ILC),由LCL逆变器组成,用于连接交直流微电网。 ②模型内容: 1.直流微电网:采用下垂控制,控制方式为电压电流双闭环,直流母线额定电压700 V。 2.交流微电网中,Boost变器采用恒压控制,直流电容电压为700 V,LCL逆变器采用下垂控制,额定频率50 Hz,额定相电压有效值220 V。 3.ILC采用双下垂控制策略,首先将交流母线频率和直流母线电压进行归一化,使其范围控制在[-1,1],之后通过ILC的归一化下垂控制调节交流母线频率和直流母线电压的偏差,最终使二者数值相同。 4.其余部分包括采样保持、坐标变、功率滤波、SVPWM等环节。 ③仿真工况:0.75 s时刻负载由12 kW增至16 kW,可以看出系统仍能稳定运行,波形质量良好,且交流母线频率和直流母线电压归一化的参数在ILC控制下趋于一致。

    基于SpringBoot+Vue.JS开发的校园闲置物品交易系统 JAVA毕业设计 源码+数据库+论文(有项目截图)+启动教程

    基于SpringBoot+Vue.JS开发的校园闲置物品交易系统 JAVA毕业设计 源码+数据库+论文(有项目截图)+启动教程

    Android Studio实现学生信息管理系统源码(高分项目).zip

    Android Studio实现学生信息管理系统源码(高分项目).zip个人经导师指导并认可通过的高分大作业项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Android Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理系统源码(高分项目).zipAndroid Studio实现学生信息管理

    VTK User's Guide第四版(最新的)-中文翻译版PDF

    VTK User's Guide双语版PDF

    国科大 并发数据结构与多核编程.zip

    国科大 并发数据结构与多核编程国科大并发数据结构与多核编程 -- 列车售票系统目录1. 基本结构的实现2. 使用位图加速余票查询3. 使用位图加速购票4. 懒惰计算5. 简单测试1. 基本结构的实现接下来叙述的实现均以下面的场景为例一共有三个站台一共有两趟车每趟车两节车厢,每节车厢两个座位 在本系统的时间中,将上述的应用场景表示为下图中的形式 如上图中所示,系统中会将三个站台之间的所有座位都表示出来,每一个车次使用一个单独的表示座位的数组表示,一共(2*2*2*2)16个座位,由于购票时用户只需要指定出发站、终点站以及车次号,因此系统仅需区分不同车次的座位,而对同一车次中的不同车厢的座位同等对待,车次中的每一个座位可以表示为一个类,如下面的形式class Seat { private Lock lock; private boolean available; public Seat() { } public void lock() { } public void unlock() {

    毕设&课程作业_基于C#的Winform公司管理系统.zip

    计算机系毕业设计

    过年倒计时动画html过年倒计时代码/春节倒计时网页版【春节倒计时html】

    过年倒计时动画html过年倒计时代码/春节倒计时网页版【春节倒计时html】 效果演示:https://www.ygwzjs.cn/cjdjs/ 备用一:cjdjswww.vbjcw.cn 备用二:cjdjswww.lxsjfx.cn 备用三:cjdjswww.seoheimao.cn 如果第一个看不了,就看其它备用的哦 过年倒计时动画html过年倒计时代码/春节倒计时网页版【春节倒计时html】

Global site tag (gtag.js) - Google Analytics