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

yizhihongxing

文章概述:

本篇文章介绍了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日

相关文章

  • mpp文件用什么打开

    MPP文件是扩展名为 .mpp 的 Microsoft Project 文件,通常用于管理项目,跟踪任务和资源。MPP文件在管理大型项目时非常有用,因为它可以用来表示任务之间的依赖关系、预算、资金流动和时间表等。 要打开 MPP 文件,需要使用 Microsoft Project 或其他兼容软件。以下是两种方法: 使用 Microsoft Project 打…

    其他 2023年4月16日
    00
  • android自定义窗口标题示例分享

    Android自定义窗口标题示例分享攻略 在Android开发中,有时候我们需要自定义应用程序窗口的标题栏,以增加应用的个性化和用户体验。下面是一个完整的攻略,包含两个示例说明。 示例1:自定义窗口标题栏颜色 要自定义窗口标题栏的颜色,可以按照以下步骤进行: 在你的Android项目的res/values目录下创建一个名为styles.xml的文件(如果已存…

    other 2023年8月21日
    00
  • Android实现双层ViewPager嵌套

    Android实现双层ViewPager嵌套攻略 在Android开发中,有时候我们需要实现双层ViewPager嵌套的效果,即一个ViewPager中包含多个子ViewPager。下面是一个详细的攻略,帮助你实现这个功能。 步骤一:添加依赖 首先,在你的项目中添加以下依赖: implementation ‘androidx.viewpager2:viewp…

    other 2023年7月28日
    00
  • 判断Unix系统及库文件是32位还是64位的详解

    判断Unix系统及库文件是32位还是64位的详解 在Unix系统中,我们可以通过一些命令和方法来判断系统及库文件是32位还是64位。下面是一个完整的攻略,包含了两个示例说明。 1. 使用命令行工具 1.1. uname命令 uname命令可以用来获取系统的信息,包括系统架构。通过查看uname -m的输出,我们可以判断系统是32位还是64位。 如果输出是i6…

    other 2023年7月28日
    00
  • C语言全方位讲解数组的使用

    C语言全方位讲解数组的使用 什么是数组 数组是C语言中存储同类型数据的一种数据结构,数组中的元素通过下标来索引,下标从0开始。数组是一个连续的内存块,每个元素占一个相同的存储单元。 声明数组 数组的声明方式为: type arrayName[arraySize]; 其中,type表示数据类型,arrayName表示数组的名称,arraySize表示数组的大小…

    other 2023年6月20日
    00
  • Spring项目中使用Junit单元测试并配置数据源的操作

    以下是在Spring项目中使用JUnit单元测试并配置数据源的操作的完整攻略: 步骤1:添加依赖 在项目的pom.xml文件中添加JUnit和Spring Test的依赖: <dependencies> <!– JUnit依赖 –> <dependency> <groupId>org.junit.jupit…

    other 2023年10月17日
    00
  • Python之Class&Object用法详解

    Python之Class&Object用法详解 在Python中,Class&Object是面向对象编程的核心概念之一。本文将详细讲解Python中Class&Object的使用方法,包括如何定义类、实例化对象、访问类属性和对象属性等。同时,本文将提供两个示例来说明Class&Object的用法。 类的定义 在Python中,…

    other 2023年6月27日
    00
  • 饿了么用户名怎么修改 手机版饿了么修改用户名方法

    饿了么用户名如何修改:手机版饿了么修改用户名方法 背景介绍 饿了么是一款在线外卖平台,已经成为中国最大的本地生活服务平台之一。很多人在使用饿了么的过程中,可能会碰到需要修改用户名的情况,比如想要更换昵称或者将自己的真实姓名用于注册。本文将详细介绍如何在手机版饿了么上修改用户名。 修改用户名的流程 在修改饿了么的用户名之前,需要先下载饿了么App,然后进入个人…

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