【Android基础入门〖13〗】Gallery

2024-05-04 10:08
文章标签 基础 android 入门 13 gallery

本文主要是介绍【Android基础入门〖13〗】Gallery,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


目录(?)[+]

1    在 xml 布局中添加 Gallery

activity_main.xml
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent">  
  4.     <Gallery  
  5.         android:id="@+id/gallery"  
  6.         android:layout_width="match_parent"  
  7.         android:layout_height="match_parent"/>  
  8. </LinearLayout>  


2    自定义 ImageAdapter

ImageAdapter.java
  1. package com.example.gallery;  
  2. import java.util.List;  
  3. import android.content.Context;  
  4. import android.content.res.TypedArray;  
  5. import android.view.View;  
  6. import android.view.ViewGroup;  
  7. import android.widget.BaseAdapter;  
  8. import android.widget.Gallery;  
  9. import android.widget.ImageView;  
  10. @SuppressWarnings("deprecation")  
  11. public class ImageAdapter extends BaseAdapter {  
  12.       
  13.     private Context context;  
  14.     private List<Integer> list;  
  15.     private TypedArray typedArray;  
  16.     private int item_background;  
  17.       
  18.     public ImageAdapter(Context context ,List<Integer> list)  
  19.     {  
  20.         this.context=context;  
  21.         this.list=list;  
  22.         this.typedArray = context.obtainStyledAttributes(R.styleable.gallery_style);  
  23.         item_background=typedArray.getResourceId(R.styleable.gallery_style_android_galleryItemBackground, 0);  
  24.         typedArray.recycle();  
  25.     }  
  26.     @Override  
  27.     public int getCount() {  
  28.         return list.size();  
  29.     }  
  30.     @Override  
  31.     public Object getItem(int position) {  
  32.         return position;  
  33.     }  
  34.     @Override  
  35.     public long getItemId(int position) {  
  36.         return position;  
  37.     }  
  38.     @Override  
  39.     public View getView(int position, View convertView, ViewGroup parent) {  
  40.         ImageView imageView = new ImageView(context);  
  41.         //设置显示的图片  
  42.         imageView.setImageResource(list.get(position));  
  43.           
  44.         //设置伸缩规格  
  45.         imageView.setScaleType(ImageView.ScaleType.FIT_XY);  
  46.           
  47.         //设置布局参数  
  48.         imageView.setLayoutParams(new Gallery.LayoutParams(150,100));  
  49.           
  50.         //设置背景边框  
  51.         imageView.setBackgroundResource(item_background);  
  52.           
  53.         return imageView;  
  54.     }  
  55. }  



3    每个 ImageView 的背景参数

res/values/attrs.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <declare-styleable name="gallery_style">  
  4.         <attr name="android:galleryItemBackground" />  
  5.     </declare-styleable>  
  6. </resources>  


4    在 MainActivity 中绑定数据与设置监听

MainActivity.java
  1. package com.example.gallery;  
  2. import java.util.ArrayList;  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.widget.AdapterView;  
  7. import android.widget.Gallery;  
  8. import android.widget.Toast;  
  9. @SuppressWarnings("deprecation")  
  10. public class MainActivity extends Activity {  
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.activity_main);  
  15.         Gallery gallery=(Gallery)findViewById(R.id.gallery);  
  16.           
  17.         ArrayList<Integer>list=new ArrayList<Integer>();  
  18.         list.add(R.drawable.img1);  
  19.         list.add(R.drawable.img2);  
  20.         list.add(R.drawable.img3);  
  21.         list.add(R.drawable.img4);  
  22.         list.add(R.drawable.img5);  
  23.         list.add(R.drawable.img6);  
  24.         list.add(R.drawable.img7);  
  25.           
  26.         ImageAdapter adapter=new ImageAdapter(this,list);  
  27.         gallery.setAdapter(adapter);  
  28.           
  29.         gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {    
  30.             @Override    
  31.             public void onItemSelected(AdapterView<?> parent, View v,int position, long id) {    
  32.                 Toast.makeText(getApplicationContext(), "选择了:  "+   
  33.                                String.valueOf(position), Toast.LENGTH_SHORT).show();  
  34.             }    
  35.               
  36.             @Override    
  37.             public void onNothingSelected(AdapterView<?> arg0) {    
  38.             //这里不做响应    
  39.             }    
  40.         });   
  41.     }  
  42. }  


5    图片资源

注:图片最好为 png 格式的图片,由于jpg是压缩后的图片,在android 中解压缩有可能导致内存溢出错误。

6    结果展示


原:http://blog.csdn.net/mkrcpp/article/details/11993163

这篇关于【Android基础入门〖13〗】Gallery的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958951

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo