zoukankan      html  css  js  c++  java
  • 第四课 Gallery的使用

    直接上代码

    1.Layout——Main.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:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="@string/Welcome"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView1" />
        <Gallery
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/gallery1" />
    </LinearLayout>

    2.Activity1.cs

    using System;
     
    using Android.App;
    using Android.Content;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.OS;
    using Android.Database;
    using Android.Provider;
     
    namespace GalleryViewDemo
    {
        [Activity(Label = "Gallery View Sample", MainLauncher = true, Icon = "@drawable/icon")]
        public class GalleryViewSample : Activity
        {
     
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
     
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
                CreateGallery();
            
            }
     
     
            private void CreateGallery()
            {
                Gallery g = this.FindViewById<Gallery>(Resource.Id.gallery1);
                g.Adapter = new ImageAdapter(this);
            }
        }
    }
     

    3.ImageAdapter.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android;
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using Android.Database;
    using Android.Provider;
    
    namespace GalleryViewDemo
    {
        public class ImageAdapter : BaseAdapter
        {
            Context _Context;
            ICursor _ImageCursor;
            protected ICursor ImageCursor
            {
                get
                {
                    if (_ImageCursor == null)
                    {
                        _ImageCursor = GetImageCursor();
                    }
                    return _ImageCursor;
                }
                set
                {
                    _ImageCursor = value;
                }
            }
            public ImageAdapter(Context c)
            {
                _Context = c;
            }
            private ICursor GetImageCursor()
            {
                string[] Projection = { MediaStore.Images.Thumbnails.ImageId };
                var ImageCursor = ((Activity)_Context).ManagedQuery(MediaStore.Images.Thumbnails.ExternalContentUri,
                    Projection, null, null, null);
                return ImageCursor;
            }
            public override int Count
            {
                get { return ImageCursor.Count; }
            }
    
            public override Java.Lang.Object GetItem(int position)
            {
                return position;
            }
    
            public override long GetItemId(int position)
            {
                ImageCursor.MoveToPosition(position);
                var ImageId = ImageCursor.GetString(0);
                return position;
            }
    
            public override View GetView(int position, View convertView, ViewGroup parent)
            {
                if (convertView == null)
                {
                    ImageView ReturnView = new ImageView(_Context);
                    ImageCursor.MoveToPosition(position);
    
                    var ImageId = ImageCursor.GetString(0);
                    ReturnView.SetImageURI(Android.Net.Uri.WithAppendedPath(MediaStore.Images.Thumbnails.ExternalContentUri, ImageId));
                    ReturnView.SetScaleType(ImageView.ScaleType.CenterCrop);
                    return ReturnView;
                }
                else
                {
                    return(ImageView) convertView;
                }
            }
        }
    }

    在模拟器中,先下载了两幅图片,运行成功。

    在手机上运行失败,尚不知道原因,求解。

  • 相关阅读:
    2021.1.18 HTML标签及元素
    嵌入式发展史简述及一些概念
    06 突破512字节的限制 上
    50 排序的工程应用示例
    01 进阶操作系统
    05 主引导程序的扩展-下
    04 主引导程序的扩展-上
    03 调试环境的搭建
    在windows下使用linux命令,GnuWin32的使用.
    gcc -I -L -l区别
  • 原文地址:https://www.cnblogs.com/catzhou/p/3591486.html
Copyright © 2011-2022 走看看