第5章(8) 图片库(Galery)

分类:C#、Android、VS2015;

创建日期:2016-02-07

一、简介

图库(也叫画廊)是一个布局小部件,用于在可水平滚动的列表中显示每一副图片,当前所选的图片将置于视图的中心。

注意:Android已经弃用了这个小部件,弃用的原因是用Galery实现的效率比较低,官方的建议是改为用HorizontalScrollView来替代这个小部件。但是,目前手机上的图片浏览功能很多都是用Galery来实现的,如果你仍然喜欢这个小部件,也可以在高版本的项目中继续使用它。

二、示例8--Demo08Gallery

1、运行截图

在模拟器中用鼠标左右拖放图片观察效果。

2、添加Demo08Gallery.axml文件

<?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"
    android:gravity="center_vertical">
    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

保存文件,然后单击解决方案资源管理器上方的【刷新】按钮。

3、添加Demo08Gallery.cs文件

using System;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Views;
using Android.Widget;
using Java.Lang;

namespace ch05demos.SrcActivity
{
    [Activity(Label = "Demo08ActionBar")]
    public class Demo08Gallery : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.demo08_Gallery);
            var g = FindViewById<Gallery>(Resource.Id.gallery);
            g.Adapter = new ImageAdapter(this)
            {
                CurrentWidth = 550,
                CurrentHeight = 550
            };
            g.ItemClick += Gallery_ItemClick;
        }

        private void Gallery_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
        {
            Toast.MakeText(this, e.Position.ToString(), ToastLength.Short).Show();
        }
    }
    public class ImageAdapter : BaseAdapter
    {
        private Context context;
        private int[] thumbIds = {
            Resource.Drawable.sample_1,
            Resource.Drawable.sample_2,
            Resource.Drawable.sample_3,
            Resource.Drawable.sample_4,
            Resource.Drawable.sample_5,
            Resource.Drawable.sample_6,
            Resource.Drawable.sample_7
        };

        //默认值为500(这是C# 6.0新增的功能,仅VS2015可以这样用)
        public int CurrentWidth { get; set; } = 500;
        public int CurrentHeight { get; set; } = 500;

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

        public override int Count
        {
            get { return thumbIds.Length; }
        }

        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            ImageView i = new ImageView(context);
            i.SetImageResource(thumbIds[position]);
            i.LayoutParameters = new Gallery.LayoutParams(500, 500);
            i.SetScaleType(ImageView.ScaleType.FitXy);
            return i;
        }

        public override long GetItemId(int position)
        {
            return 0;
        }

        public override Java.Lang.Object GetItem(int position)
        {
            return null;
        }
    }
}

运行。

时间: 2024-10-24 03:49:29

第5章(8) 图片库(Galery)的相关文章

javascript dom 编程艺术笔记 第四章:图片库

首先先建立一个html文件,建立一个图片库 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

JavaScript Dom编程艺术 第6章的一个错误

今天在看JavaScript Dom编程艺术 第6章:图片库的改进版时:按照书上的代码,敲出来运行,确怎么也不能显示出正确的结果.加进去断点,调试,发现:prepareGallery 函数根本没被调用,而prepareGallery函数是绑定到window.onLoad事件上的,于是仔细检查书上代码,发现,window.onLoad = prepareGallery;后边少加了个括号.加上括号之后,结果正确.改正后的代码如下: 1 function addLoadEvent(func){ 2 v

JavaScript DOM编程艺术第二版学习(1/4)

---恢复内容开始--- 接下来项目需要网页相关知识,故在大牛的指引下前来阅读本书. 当前水平:HTML&CSS&JS基本掌握,能在阅读文档以及Google查找的情况下完成前端代码编写,但是学习不深,HTML5&CSS3新特性.JS基础&框架皆不熟悉 读书目的:了解DOM概念并通过训练熟悉掌握,了解JS特性 博客目的:督促自己学习并记录下过程 博客编写时读书进度:第6章完结 阅读规划: 浏览目录之后,总结该书学习思路大致如下(其实就是生搬目录): 简史->最基础语法-

javascript dom编程艺术 第2版

W3C 推出了标准化的DOM, 就是我们现在常用方法, 比如获取一个元素:document.getElementById(id) 语法用JavaScript编写的脚本,都是由一系列指令构成,这些指令叫做语句(statement). 只要按照正确的语法编写出来的语句才能得到正确的解释.JavaScript 每条语句以换行符或分号视为结束. 如下为两条语句:first statementsecond statement也可以放在一行:first statment; second statment;建

BAT大牛 带你深度剖析Android 10大开源框架

第1章 课程介绍(提供bat内推和简历指导) 1-1 课程导学 第2章 Okhttp网络库深入解析和相关面试题分析 2-1 okhttp框架流程分析 2-2 okhttp同步请求方法 2-3 okhttp异步请求方法 2-4 okhttp同步请求流程和源码分析 2-5 okhttp异步请求流程和源码分析-1 2-6 okhttp异步请求流程和源码分析-2 2-7 okhttp任务调度核心类dispatcher解析-1 2-8 okhttp任务调度核心类dispatcher解析-2 2-9 okh

《Javascript DOM编程艺术》--第六章案例研究图片库改进版

DOM脚本编程有关的问题:平稳退化.向后兼容.分离Javascript. 一. 平稳退化 如果禁用了js后,基本功能可以实现吗? 二. 分离Javascript 1. 添加事件处理函数: a. 检查点:普通适用性检测(检测是否支持DOM方法):针对性检测(检测对象是否存在) 这是预防性措施.即使以后决定从网页上删除某个标记,也不用担心js报错.此时,体现了js与html分离的重要性. 原则:想用js给网页添加行为,就不应该让js代码对这个网页的结构有任何依赖. b. 变量名:保留字和关键字不能用

第四章:Django 的模板系统(转)

在之前的章节中,你可能觉得例子中视图返回文本有点不妥.即是, HTML 是直接写在 Python 代码中的. 这种做法会导致这些问题: 要做任何设计上的更改就必须改写 Python 代码.网站的设计风格的更变一般来说会比更改后台的 Ptyhon 代码来得频繁,因此如果能够更改设计而不用更改 Python 变得尤为方便. 2 Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成.设计人员和 HTML/CSS 编写人员都不应

dom编程艺术章12

function addLoadEvent(func){//添加事件函数 var oldonload = window.onload; if(typeof window.onload != 'function'){ window.onload = func; }else{ window.onload = function(){ oldonload(); func(); } } } function insertAfter(newElement,targetElement){//自带的是inser

C#认证第一章1 题 11题

C#第一章第一题 C#认证第一章  11题