画廊视图Gallery

简介:

幻灯片图片浏览器

1.布局

复制代码
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".AndroidGalleryActivity" >
 7 
 8     <ImageSwitcher
 9         android:id="@+id/imgswi"
10         android:layout_width="320dp"
11         android:layout_height="320dp" />
12 
13     <Gallery
14         android:id="@+id/gallery"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:layout_marginTop="25dp"
18         android:unselectedAlpha="0.6"
19         android:spacing="3pt"
20          />
21 
22 </LinearLayout>
复制代码

2.逻辑控制

复制代码
  1 package com.example.androidgallery;
  2 
  3 import android.os.Bundle;
  4 import android.app.Activity;
  5 import android.content.res.TypedArray;
  6 import android.support.v4.view.ViewPager.LayoutParams;
  7 import android.view.Menu;
  8 import android.view.View;
  9 import android.view.ViewGroup;
 10 import android.view.animation.AnimationUtils;
 11 import android.widget.AdapterView;
 12 import android.widget.AdapterView.OnItemSelectedListener;
 13 import android.widget.BaseAdapter;
 14 import android.widget.Gallery;
 15 import android.widget.ImageSwitcher;
 16 import android.widget.ImageView;
 17 import android.widget.ViewSwitcher.ViewFactory;
 18 
 19 public class AndroidGalleryActivity extends Activity {
 20 
 21     int[] imageIds=new int[]{
 22     R.drawable.mm,
 23     R.drawable .mm2,
 24     R.drawable.mm3,
 25     R.drawable.mm4
 26     } ;
 27     
 28     @Override
 29     protected void onCreate(Bundle savedInstanceState) {
 30         super.onCreate(savedInstanceState);
 31         setContentView(R.layout.activity_android_gallery);
 32         final Gallery gallery=(Gallery)this.findViewById(R.id.gallery);
 33         final ImageSwitcher imgswi=(ImageSwitcher)this.findViewById(R.id.imgswi);
 34         //设置ViewFactory对象
 35         imgswi.setFactory(new ViewFactory() {
 36             
 37             @Override
 38             public View makeView() {
 39                 ImageView imageView=new ImageView(AndroidGalleryActivity.this);
 40                 imageView.setBackgroundColor(0xff0000);
 41                 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
 42                 imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
 43                 return imageView;
 44             }
 45         });
 46         //设置图片更换动画效果
 47         imgswi.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
 48         imgswi.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
 49         //创建一个BaseAdapter对象,负责提供Gallery显示每张图片
 50         BaseAdapter adapter=new BaseAdapter() {
 51             
 52             @Override
 53             public View getView(int position, View convertview, ViewGroup parent) {
 54                 //创建一个ImageView
 55                 ImageView imageView=new ImageView(AndroidGalleryActivity.this);
 56                 imageView.setImageResource(imageIds[position%imageIds.length]);
 57                 //设置ImageView缩放类型
 58                 imageView.setScaleType(ImageView.ScaleType.FIT_XY);
 59                 imageView.setLayoutParams(new Gallery.LayoutParams(75,100));
 60                 /*TypedArray typeArray=obtainStyledAttributes(R.styleable.Gallery);
 61                 imageView.setBackgroundResource(TypedArray)*/
 62                 return imageView;
 63             }
 64             
 65             @Override
 66             public long getItemId(int arg0) {
 67                 // TODO Auto-generated method stub
 68                 return arg0;
 69             }
 70             
 71             @Override
 72             public Object getItem(int arg0) {
 73                 // TODO Auto-generated method stub
 74                 return arg0;
 75             }
 76             
 77             @Override
 78             public int getCount() {
 79                 // TODO Auto-generated method stub
 80                 return imageIds.length;
 81             }
 82         };
 83         
 84         gallery.setAdapter(adapter);
 85         gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
 86 
 87             @Override
 88             public void onItemSelected(AdapterView<?> parent, View view,
 89                     int position, long id) {
 90                 // TODO Auto-generated method stub
 91                 imgswi.setImageResource(imageIds[position%imageIds.length]);
 92             }
 93 
 94             @Override
 95             public void onNothingSelected(AdapterView<?> parent) {
 96                 // TODO Auto-generated method stub
 97                 
 98             }
 99             
100         });
101     }
102 
103     @Override
104     public boolean onCreateOptionsMenu(Menu menu) {
105         // Inflate the menu; this adds items to the action bar if it is present.
106         getMenuInflater().inflate(R.menu.activity_android_gallery, menu);
107         return true;
108     }
109 
110 }
复制代码

本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/archive/2013/03/02/2939902.html如需转载请自行联系原作者


欢醉

相关文章
|
监控
阿里云应用性能管理(APM)产品-应用实时监控服务(ARMS)技术解密 资料下载
直播大纲 1. 应用性能管理(APM)背景介绍 2. 分布式链路追踪的现状与使用场景 3. ARMS分布式链路追踪的技术实现 4. 最佳实践 (1) 全息排查+场景链路(2) 前端监控与应用监控融合(3) ARMS与K8S的融合与实践 专家介绍 阳其凯(逸陵),阿里巴巴高级开发工程师,2016年加入阿里巴巴Eageleeye团队,多年实时计算平台与APM产品开发经验,目前主要负责云产品业务实时监控服务(ARMS)与链路追踪(Tracing Analysis)的研发工作。
13399 0
|
监控 算法 测试技术
性能优化之几种常见压测模型及优缺点 | 陈显铭
上一篇讲的是《性能优化的常见模式及趋势》,今天接着讲集中常见的压测模型。通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测。
6027 0
|
前端开发
构建一个简单的React图片画廊应用
构建一个简单的React图片画廊应用
261 0
|
前端开发 JavaScript 算法
【web前端技术】响应式画廊Gallery插件-Justified-Gallery
【web前端技术】响应式画廊Gallery插件-Justified-Gallery
391 0
|
人工智能 JSON 自然语言处理
ChatGPT:如何写好 Prompt ?
现在已经产生了一种新职业:Prompt Engineer(提示指令工程师),可见 Prompt 是多么重要,且编写不易。
1470 1
|
移动开发 前端开发 Android开发
印象最深的一个bug-----ios 微信内置浏览器微信二维码长按无法识别
ios 微信内置浏览器微信二维码长按无法识别
1372 0
印象最深的一个bug-----ios 微信内置浏览器微信二维码长按无法识别
ISV权限不足自查方案
错误原因: 1.没有该接口的调用权限 2.应用未上线或未添加功能 3.接口调用错误 自查方案: 1.确认自己是否签约有相关的接口权限   a.访问链接:[url]https://b.alipay.com/signing/authorizedProductSet.
3368 11
|
存储 缓存 JavaScript
“云”端的语雀:用 JavaScript 全栈打造商业级应用
本文介绍了语雀近年来经过架构的不断演进,到目前的商业化阶段,是如何通过 JavaScript 全栈进行研发使得产品逐年发展,技术逐年演进的。
“云”端的语雀:用 JavaScript 全栈打造商业级应用
|
监控 安全 微服务
阿里云Kubernetes Service Mesh实践进行时(1): Istio初体验
本篇文章是系列中的第一篇,主要讲述利用阿里云Kubernetes容器服务,快速搭建一套用于连接、管理以及安全化微服务的开放平台Istio,为应用引入和配置多个相关服务。
15243 0
|
数据采集 缓存 监控
IoT日志利器:嵌入式日志客户端(C Producer)发布
2017年12月19日至20日,2017云栖大会·北京峰会在国家会议中心召开,飞天智能是贯穿云栖大会不变的主题,云计算、大数据、人工智能、物联网等热门话题备受各方关注。其中阿里云日志服务发布的嵌入式日志采集客户端(C Producer Library) 就是其中解决物联网日志采集、分析难的利器。
7721 0
IoT日志利器:嵌入式日志客户端(C Producer)发布