Android控件系列之相册Gallery&Adapter适配器入门&控件缩放动画入门

文章概述:

本篇文章介绍了Android中的两个常用控件——相册Gallery和适配器Adapter,并将介绍使用Gallery时实现图片控件缩放动画的方法。其中,将会针对这些控件的使用方法、属性以及实现原理进行详细解析,并提供两个实例按照步骤讲解。

一、Gallery控件

Gallery是Android原生控件中最早的一个图片浏览控件,但在2011年作为过时组件被Android官方所废弃。即使废弃,但大部分Android开发者仍然使用,因为Gallery在实现上非常简单、易于上手。使用Gallery实现图片浏览也非常直观,用户只需滑动可以水平或垂直的图片列即可进行图片预览。

Gallery的使用方法:

  1. 在XML布局文件中定制Gallery控件,eg:
<Gallery  
    android:id="@+id/gallery"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content">  
</Gallery>  
  1. 定义Gallery控件所需要的Adapter适配器,eg:
public class ImageAdapter extends BaseAdapter {  
    private Context mContext;  

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

    public int getCount() {  
        return mThumbIds.length;  
    }  

    public Object getItem(int position) {  
        return null;  
    }  

    public long getItemId(int position) {  
        return 0;  
    }  

    //创建Gallery需要的这个控件的ImageView  
    public View getView(int position, View convertView, ViewGroup parent) {  
        ImageView imageView = new ImageView(mContext);  
        imageView.setImageResource(mThumbIds[position]);  
        imageView.setLayoutParams(new Gallery.LayoutParams(150, 100));  
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);  
        return imageView;  
    }  
   // references to our images  
    private Integer[] mThumbIds = {  
            R.drawable.sample_1,  
            R.drawable.sample_2,  
            R.drawable.sample_3,  
            R.drawable.sample_4,  
            R.drawable.sample_5,  
            R.drawable.sample_6,  
            R.drawable.sample_7  
    };  
} 
  1. 在Activity中完成Gallery和Adapter的关联,eg:
public class AndroidGallery extends Activity {  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  

        Gallery gallery = (Gallery) findViewById(R.id.gallery);  
        gallery.setAdapter(new ImageAdapter(this));  
    }  
}  

以上就是使用Gallery控件的基本解释,但在实际开发中,由于Google不推荐使用Gallery,建议使用RecyclerView等替代方案,以达到更流畅的用户体验。

二、适配器Adapter

Adapter是常用的Android控件,它承载着数据,将数据连接到用户的View。在Android中,我们常用的Adapter有ListView、GridView、Spinner等,它们都是继承自BaseAdapter。Adapter的主要作用是为ListView等提供数据集,同时实现一定的视图缓存和按需绘制显示。而且在用于那些需要动态加载或者变换的项目时,使用Adapter不仅方便,还避免了因为数据更新而对整个界面重新渲染的问题。

适配器Adapter的使用方法:

  1. 创建Adapter类,实现BaseAdapter类和4个重要的方法,eg:
public class FruitAdapter extends BaseAdapter {  
    private List<Fruit> mFruitList;  
    private Context mContext;  

    public FruitAdapter(Context context, List<Fruit> fruitList){  
        mContext = context;  
        mFruitList = fruitList;  
    }  

    @Override  
    public int getCount() {  
        return mFruitList.size();  
    }  

    @Override  
    public Object getItem(int position) {  
        return mFruitList.get(position);  
    }  

    @Override  
    public long getItemId(int position) {  
        return position;  
    }  

    @Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
        ViewHolder holder;    
        if (convertView == null) {    
            convertView = LayoutInflater.from(mContext).inflate(R.layout.fruit_item, null);    
            holder = new ViewHolder();    
            holder.fruitImage = (ImageView) convertView.findViewById(R.id.fruit_image);    
            holder.fruitName = (TextView) convertView.findViewById(R.id.fruit_name);    
            convertView.setTag(holder);// 将ViewHolder存储在View中    
        } else {    
            holder = (ViewHolder) convertView.getTag();// 重新获取ViewHolder    
        }    
        Fruit fruit = mFruitList.get(position);    
        holder.fruitImage.setImageResource(fruit.getImageId());    
        holder.fruitName.setText(fruit.getName());    
        return convertView;    
    }    
    class ViewHolder {    
        ImageView fruitImage;    
        TextView fruitName;    
    }    
}
  1. 定义数据展示及其容器ListView,eg:
<ListView  
    android:id="@+id/list_view"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content">  
</ListView>  
  1. 完成Adapter和ListView的绑定调用,eg:
public class MainActivity extends AppCompatActivity {  
    private List<Fruit> mFruitList = new ArrayList<>();    

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        initFruits();  
        FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, mFruitList);    
        ListView listView = (ListView) findViewById(R.id.list_view);  
        listView.setAdapter(adapter);  
    }  

    private void initFruits() {    
        for (int i = 0; i < 2; i++) {    
            Fruit apple = new Fruit("Apple", R.drawable.apple_pic);    
            mFruitList.add(apple);    
            Fruit banana = new Fruit("Banana", R.drawable.banana_pic);    
            mFruitList.add(banana);    
            Fruit orange = new Fruit("Orange", R.drawable.orange_pic);    
            mFruitList.add(orange);    
            Fruit watermelon = new Fruit("Watermelon", R.drawable.watermelon_pic);    
            mFruitList.add(watermelon);    
            Fruit pear = new Fruit("Pear", R.drawable.pear_pic);    
            mFruitList.add(pear);    
            Fruit grape = new Fruit("Grape", R.drawable.grape_pic);    
            mFruitList.add(grape);    
            Fruit pineapple = new Fruit("Pineapple", R.drawable.pineapple_pic);    
            mFruitList.add(pineapple);    
            Fruit strawberry = new Fruit("Strawberry", R.drawable.strawberry_pic);    
            mFruitList.add(strawberry);    
            Fruit cherry = new Fruit("Cherry", R.drawable.cherry_pic);    
            mFruitList.add(cherry);    
            Fruit mango = new Fruit("Mango", R.drawable.mango_pic);    
            mFruitList.add(mango);    
        }    
    }    
} 

三、控件缩放动画入门

利用Android中动画资源机制的ImageView属性动画实现的缩放动画,需要用到Android自带的View动画是比较简单的实现方式。大体内容是定义一个一开始是不可见状态,一点击图片则出现放大缩小效果的动画。

  1. 导入一张图片,eg:
<ImageView  
     android:id="@+id/image_big"  
     android:src="@drawable/love1"  
     android:layout_width="match_parent"  
     android:layout_height="240dp"  
     android:scaleType="centerCrop"  
     android:visibility="invisible"/>  
  1. 编写XML文件定义动画,eg:
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <scale  
        android:fromXScale="1.0"  
        android:fromYScale="1.0"  
        android:toXScale="1.2"  
        android:toYScale="1.2"  
        android:pivotX="50%"  
        android:pivotY="50%"  
        android:duration="200" />  
    <scale  
        android:fromXScale="1.2"  
        android:fromYScale="1.2"  
        android:toXScale="1.0"  
        android:toYScale="1.0"  
        android:pivotX="50%"  
        android:pivotY="50%"  
        android:startOffset="200"  
        android:duration="200" />  
</set>  
  1. Activity中控制动画的点击事件,eg:
Button btn_simple = (Button)findViewById(R.id.btn_simple);  
     ImageView big_img = (ImageView)findViewById(R.id.image_big);  
     final Animation anim = AnimationUtils.loadAnimation(this,R.anim.big_pic_anim);  
     btn_simple.setOnClickListener(new View.OnClickListener() {  
         @Override  
         public void onClick(View v) {  
             if (big_img.getVisibility() == View.GONE){  
                 big_img.setVisibility(View.VISIBLE);  
                 big_img.startAnimation(anim);  
             }else {  
                 big_img.setVisibility(View.GONE);  
             }  
         }  
     });      

以上,便是实现图片控件缩放动画的基本流程。在实际项目中应用时,还可以根据实际需求,通过不同的动画效果、时长、条件等来实现更多的定制需求。

示例解释:分别使用2个控件——Gallery和适配器Adapter完成了两个库——图片查看效果和数据列表展示效果的实现,通过阅读完整篇幅的讲解可以了解到控件的基础属性,以及布局和适配器的绑定关系及其针对开发中的简单应用和用法,同时,学习到了一种利用Android动画资源机制实现控件缩放的基本实现方式。该攻略的代码示例具体讲解,让读者能够在日后开发中轻松地将这些控制添加到自己的项目中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android控件系列之相册Gallery&Adapter适配器入门&控件缩放动画入门 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Python操控Chrome浏览器进行网页操作

    要用Python操控Chrome浏览器进行网页操作,首先需要安装selenium库,可以通过以下命令进行安装: pip install selenium 安装完毕后,按照以下步骤进行操作: 1. 导入库和设置浏览器 from selenium import webdriver # 设置 Chrome 选项 chrome_options = webdriver…

    other 2023年6月26日
    00
  • Windows 环境变量编辑器使用步骤

    当我们需要使用多个不同的应用程序或脚本时,我们可能会遇到环境变量的问题。环境变量是一种特殊的变量,它们用于存储在操作系统中可用的值,例如文件路径或者一些配置信息。如果我们在 Windows 系统下需要编辑环境变量,可以使用“环境变量编辑器”。 下面,我们将为您提供详细的 Windows 环境变量编辑器使用步骤: 步骤1:打开环境变量编辑器 首先,我们需要打开…

    other 2023年6月27日
    00
  • hbuilderx全局搜索

    HBuilderX全局搜索 HBuilderX是DCloud公司推出的一款跨平台的多端开发IDE,不仅能够支持Web、App等前端开发,还支持Flutter、Vue等多种语言。作为一款强大的前端开发工具,搜索功能是其不可或缺的一个部分。 在HBuilderX中,全局搜索是一个非常实用且重要的功能。当代码量较大且层级复杂时,我们通常需要进行全局搜索以快速找到指…

    其他 2023年3月29日
    00
  • win10创意者更新RTM版来了 Win10 Build 15063真实镜像下载地址分享

    Win10创意者更新RTM版攻略 Win10创意者更新RTM版是Windows 10的一个重要更新版本,提供了许多新功能和改进。本攻略将详细介绍如何获取Win10 Build 15063的真实镜像下载地址,并提供两个示例说明。 步骤一:查找真实镜像下载地址 打开浏览器,进入搜索引擎网站(如Google、Bing等)。 在搜索框中输入“Win10 Build …

    other 2023年8月4日
    00
  • Android应用开发工程目录作用介绍

    以下是使用标准的Markdown格式文本,详细讲解Android应用开发工程目录的作用介绍的完整攻略: app目录 src/main:主要代码目录,包含Java代码和资源文件。 src/androidTest:用于编写Android单元测试的目录。 src/test:用于编写Java单元测试的目录。 build.gradle:应用级别的Gradle构建文件,…

    other 2023年10月14日
    00
  • JavaScript中layim之整合右键菜单的示例代码

    下面我将为你详细讲解“JavaScript中layim之整合右键菜单的示例代码”的完整攻略。 前言 layim 是一款适用于WebIM的 UI 框架,用于快速实现聊天界面。在聊天界面中,一些右键菜单的存在是非常必要的,比如选择文字、复制/粘贴、回复消息等等。本文将介绍如何在 layim 中整合右键菜单。 示例代码 layim.chat({ name: ‘田七…

    other 2023年6月27日
    00
  • Asp.Net Core Web应用程序—探索

    Asp.Net Core Web应用程序是一种基于.Net Core框架的Web应用程序开发平台,支持使用C#等编程语言进行开发,并且具有跨平台性能优越的特点。本攻略将为您介绍如何运用Asp.Net Core Web应用程序进行Web应用程序的开发。 第一步:安装.Net Core SDK 在开始使用Asp.Net Core Web应用程序进行Web应用程序…

    other 2023年6月25日
    00
  • idea 实现搜索jdk中的类和包操作

    实现搜索JDK中的类和包操作攻略 1. 确定搜索目标 首先,我们需要明确我们的搜索目标是在JDK中查找类和包。JDK(Java Development Kit)是Java开发工具包,其中包含了Java编程所需的类和工具。 2. 准备工作 在开始搜索之前,我们需要确保以下几个准备工作已完成:- 安装JDK:确保已经正确安装了JDK,并且配置了环境变量。- 设置…

    other 2023年9月7日
    00
合作推广
合作推广
分享本页
返回顶部