Android入门/Gallery(十三)

Android 真正的3D Gallery 主要实现的类:package com.ws.wsvod.opengl; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio... 阅读详情
公共类

Gallery

extends  AbsSpinner
implements   GestureDetector.OnGestureListener
java.lang.Object的
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView <T延伸  android.widget.Adapter >
         ↳ android.widget.AbsSpinner
           ↳ android.widget.Gallery

这个类被废弃了。
不再支持这个控件。其他水平滚动的部件包括HorizontalScrollView的 支持库和ViewPager。

大致写上这个类的使用过程

在学习过程中发现,好多次把资源图片等文件放进项目之后R.java就报错,不得其解。

然后细心的发现,每次报错都遇到这样的情况:

  • 文件名称纯数字
  • 大写字母

然后Google一下才知道:

 资源文件只能以小写字母和下划线做首字母,且名称中只能出现 [a-z0-9_.] 这些字符。

UI  activitu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"  
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    	<Gallery 
    	    android:id="@+id/gallery"
    	    android:layout_width="fill_parent"
    	    android:layout_height="fill_parent"
    	    />
</LinearLayout>

Java 代码

public class MainActivity extends Activity {
    
	private Gallery mGallery;  
      
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        PreInitUI();
        InitUI();
        PostInitUI();
    }  
    // First  找到控件 为InitUI()做准备
    private void PreInitUI()
    {
    	 setContentView(R.layout.activity_main);   
         mGallery = (Gallery)findViewById(R.id.gallery);    	
    }
    // Second 加载适配器 
    private void InitUI(){
    	 try {  
             mGallery.setAdapter(new ImageAdapter(this));  
         } catch (IllegalArgumentException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         } catch (IllegalAccessException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         }  
    }
    // Third 设置事件
    private void PostInitUI(){
        mGallery.setOnItemClickListener(new OnItemClickListener() 
        {  
            public void onItemClick(AdapterView parent, View v, int position, long id) {  
            	MainActivity.this.setTitle(String.valueOf(position));  
            }  
        });
    }
    //  内部类  ImageAdapter 
    private class ImageAdapter extends BaseAdapter{  
    	
        private Context mContext;  
        private ArrayList<Integer> imgList=new ArrayList<Integer>();  	//  id
        private ArrayList<Object> imgSizes=new ArrayList<Object>();  	// width heigth
        
        public ImageAdapter(Context c) throws IllegalArgumentException, IllegalAccessException{  
            mContext = c;  
            //数据源
            mField();
        }  
        
        private void mField() throws IllegalArgumentException, IllegalAccessException
        {
        	
        	/*  1  . 用反射机制来获取资源中的图片ID和尺寸  
        	 * Tip:
        	 * 		Field[] id = R.drawable.class.getDeclaredFields(); 		获取资源id集 返回值是数组
        	 * 		Field id = R.drawable.class.getDeclaredField("name");   获取指定资源名称的id 		
        	 */  
            Field[] fields = R.drawable.class.getDeclaredFields();  
            
            for (Field field : fields)  
            {  
                if (!"icon".equals(field.getName()))//除了icon之外的图片  
                {     
                    int index=field.getInt(R.drawable.class);  // 指定资源的内存地址 id
                    //保存图片ID  
                    imgList.add(index);  
                    //保存图片大小  
                    int size[]=new int[2];  
                    /*
                     * 		BitmapFactory.decodeResource(Resources res, int id);
                     * 		方法描述: 将指定资源id 解码成 一个Bitmap对象 ]
                     * 		返回值 : Bitmap ,并可请求位图的长宽
                     * */
                    Bitmap bmImg=BitmapFactory.decodeResource(getResources(),index);  
                    size[0]=bmImg.getWidth();
                    size[1]=bmImg.getHeight();  
                    imgSizes.add(size);  
                }  
            }  
        	
        }
        
        public int getCount() {  
            // TODO Auto-generated method stub  
            return imgList.size();  
        }  
  
        @Override  
        public Object getItem(int position) {  
            // TODO Auto-generated method stub  
  
            return position;  
        }  
  
        @Override  
        public long getItemId(int position) {  
            // TODO Auto-generated method stub  
  
            return position;  
        }  
        
        /* 2  . 点击图片 事件*/
        public View getView(int position, View convertView, ViewGroup parent) {  
       
            ImageView i = new ImageView (mContext);  
            //请求指定position的资源id 
            i.setImageResource(imgList.get(position).intValue());  	
            /*
             * Tips:
             * 			setScaleType()
             * 			控制图像应如何调整大小或移动,以配合这个ImageView的大小。
             * 	setScaleTypeAPI : 	http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType 
             * */
            i.setScaleType(ImageView.ScaleType.CENTER_CROP);  
            //从imgSizes取得图片大小  
            int size[]= new int[2];  
            size=(int[]) imgSizes.get(position);  
            i.setLayoutParams(new Gallery.LayoutParams(size[0], size[1]));  
            return i;  
        }  
          
    }
    
}


基础矩阵、本质矩阵、单应矩阵 基础矩阵是一个 3×3 的秩为2的矩阵,用于描述两个不同视图(或称为图像)之间对应点的几何约束。更具体地说,如果你有两幅图像,分别从两个不同的相机或者相机位置拍摄,那么基础矩阵可以用于找到一个图像中的点在另一个图像中的对应点。本质矩阵也是一个 3×3 的秩为2的矩阵,与基础矩阵非常类似。当两个视图(图像)之间的场景是一个平面或者两个视图之间仅有旋转和平移时,可以使用单应矩阵来关联这两个视图。这三个矩阵都是在计算机视觉中广泛应用的基础工具,但它们适用于不同类型的视图和场景。给定两个图像中的一对对应点。 阅读详情

相关推荐

基于Java+SpringBoot+Vue的中小企业设备管理系统的设计与开发(源码+lw+部署文档+讲解等)

💗博主介绍:✌新人博主,工作经验两年+、专注于Java、小程序技术领域和毕业项目实战✌💗🌟文末获取源码+数据库🌟

2301_76502068的博客 1383

笔记

//获取连连看所有图片的ID(约定所有图片ID以p_开头)  public static List getImageValues()  {Log.e("hyz", "ImageUtil:getImageValues()");   try   {    // 得到R.drawable所有的属性, 即获取drawable目录下的所有图片    Field[] drawableFields

hyz4287010的专栏 618

SAP ABAP MIGO增强实战:自定义页签与字段的完整实现指南

本文详细介绍了SAP ABAP中MIGO增强的实战指南,包括自定义页签与字段的完整实现步骤。通过BADI增强技术,开发者可以快速满足企业个性化需求,如添加供应商批次号等特殊字段。文章涵盖数据存储结构设计、BADI框架实现、核心方法编写及数据持久化方案,帮助用户高效完成MIGO屏幕增强开发。

study的专栏 774

根据文件名生成内存的资源id,即R.drawable中

private void facesinit() { resIds = new int[68]; for (int i = 0; i resIds[i] = makeFaceId(i); } } /** * 根据资源图片的名字构造、获取其R。drawable。_的值 * @param id * @return */ private int makeFaceId(int id

y394996630的专栏 1066

AUTOSAR/汽车行业

AUTOSAR架构及汽车产业链相关介绍

m0_54254513的博客 1万+

通过Scrapy爬虫抓取Deep Learning领域的论文数据

然而,大部分高质量的deep learning研究论文都是通过国际顶尖学术会议(如neurips、iclr、icml等)发表的,而这些论文的获取难度较大。在本文中,我们选择抓取arXiv的数据。arXiv是一个管理科学论文的网站,其中包括了许多领域的论文,也包括了Deep Learning领域的论文。同时,arXiv网站还提供了方便的API接口,使得我们的爬虫程序可以很方便地获取论文数据。通过结合其他的数据处理技术,我们可以对这些数据进行更深入的研究和分析,从而推动Deep Learning领域的发展。

Ob2024的博客 609

通过反射读取R.drawable对应地图片资源id

1.首先R文件是一个java类而drawable是其一个静态内部类其所有的字段都为静态字段 对于静态字段通过反射读取时是不需要指定对象的所以 getInt(null)中的参数置空protected int getDrawableId(String key) { if (TextUtils.isEmpty(key)) { return -1; }

-琥珀-的专栏 2403

图像做旧算法原理及代码解释

该图像做旧算法主要通过一系列的图像处理操作来模拟旧照片的效果。整体流程包括:首先对输入图像进行颜色调整,降低饱和度并增加黄色调以营造出旧照片的色彩风格;接着添加高斯噪声来模拟旧照片可能存在的颗粒感;最后通过在图像上随机绘制线条来模拟旧照片的划痕和瑕疵。综上所述,该图像做旧算法通过对颜色的调整(包括饱和度降低、色相偏移)、添加高斯噪声以及模拟划痕和瑕疵等一系列操作,从多个方面模拟了旧照片的特征。

m0_44975814的博客 901

Android 循环Gallery,3D Gallery以及HorizontalScrollView替代Gallery

/ Toast.makeText(Main.this, “点击了” + num, Toast.LENGTH_SHORT)// Toast.makeText(Main.this, “点击了” + num, Toast.LENGTH_SHORT)tvHint.setText(“3D Gallery:点击了” + num);tvHint.setText(“循环Gallery:点击了” + num);tvNum.setText(“循环Gallery:点击了” + num);

2401_89308058的博客 1012

基于matlab的CNN验证码识别系统(UI界面版)

基于matlab的CNN验证码识别系统(UI界面版),CNN验证码识别系统包括数据集处理、模型搭建、模型训练、界面设计与实现

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 483

Android NDK/JNI面试题大全及参考答案(3万字长文)

是一套工具集合,它允许开发者为Android平台编写原生应用程序或者应用程序的部分模块。NDK 主要用于开发那些需要高性能计算的应用程序,例如游戏引擎、图像处理软件或音频/视频编码解码器等。通过使用 C 或 C++ 编写代码,开发者可以利用硬件加速功能,提高应用性能。NDK 提供了一系列工具来帮助开发者完成从源代码到可执行文件的整个过程,包括编译、链接、调试等功能。

大模型大数据攻城狮的专栏 1256

Android 对Gallery的挖掘

一.循环Gallery 现在看一下官方API的文档,可以看到这样一句话:该类已被弃用,其他水平滚动窗口小部件包括HorizontalScrollView和ViewPager从支持库。因为这个类是API Level 1里面的,时间比较久了。虽说被弃用,也只是不再支持后续的更新,但是我们也可以用它来作为一个学习的例子。所以说即使是Gallery不让用了,我们还可以使用HorizontalScro

easyer2012的专栏 5840

dji psdk开发 关于SDK认证芯片的使用

Payload SDK V3.10.0 于 2025-1-8 发布,增加了 Matrice 4T/4E 机型支持,同时也增加了 DJI SDK 认证芯片(DJI SDK CC)功能支持。关于认证芯片的介绍大疆 SDK 认证芯片(DJI SDK Certified Chip),简称 DJI SDK CC,用于认证基于 DJI Eport/Eport-Lite 接口开发的第三方负载设备,确保设备能够正常工作并与无人机可以进行有效通信,起到负载安全认证和功能授权的作用。

热爱生活,忠于自己 2145

Android Gallery画廊

Android Gallery画廊

Android开发-CXY的博客 2705

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android入门第十三篇之Gallery + ImageSwitcher

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!        上次讲了如何使用Gallery控件,这次就讲Gallery 与ImageSwitcher的结合使用,本文实现一个简单的浏览图片的功能。先贴出程序运行截图: 除了Gallery可以拖拉切换图片,我在ImageSwitcher控件加入了setOnTouchListener事件实现,使得Ima

u010482217的专栏 723

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 循环Gallery,3D Gallery以及HorizontalScrollView替代Gallery(1)

/ Toast.makeText(Main.this, “点击了” + num, Toast.LENGTH_SHORT)// Toast.makeText(Main.this, “点击了” + num, Toast.LENGTH_SHORT)tvHint.setText(“3D Gallery:点击了” + num);tvHint.setText(“循环Gallery:点击了” + num);tvNum.setText(“循环Gallery:点击了” + num);

2401_85730195的博客 630

Android之Gallery画廊

Gallery 我们在智能手机上应该都见过可以滑动操作的图片集,在安卓开发中我们是用Gallery实现这种图片滑动效果的。Gallery是一个内部元素可以水平滚动,并且可以把当前选择的子元素定位在它中心的布局组件。 操作步骤:通过适配器往Gallery中添加一组照片 XML布局如下: <LinearLayout xmlns:android="htt...

alex_wen2014的博客 308

android gallery效果,Android开发实现Gallery画廊效果的方法

本文实例讲述了Android开发实现Gallery画廊效果的方法。分享给大家供大家参考,具体如下:画廊 使用Gallery表示,按水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,可以响应事件显示信息。xml布局文件基本语法属性列表/>Gallery支持4中xml属性属性名称描述android:animationDuration设置布局变化时动画的转换...

weixin_42369343的博客 2088

android基础入门Gallery与ImageView视图(10)

一.Gallery和ImageView视图:

u010708662的专栏 1848

Android gallery 的使用

这个控件在android 4.1以后不建议使用,替代UI为ViewPager,下面给出一个网友的事例: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android...

FLY_THINK2012的博客 188
上一篇: Android入门/TabHost(十二)
下一篇: Android入门/ImageSwitcher(十四)
多格AI零代码
博客等级 码龄15年 40粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值