Android 初学 图片切换 Image switching and showing

来源:互联网 发布:淘宝蚂蚁花呗激活教程 编辑:程序博客网 时间:2024/05/16 10:09

今天用AS学做了一个简单的图片切换小程序

其中用到了一个ImageSwitcher的类通过设置一个ViewFactory工厂,实现其makeView()方法来创建显示图片的View。和和一个叫做“画廊类”的Gallery类,来陈列图片资源;

方法setImageResource用来显示指定的图片资源。

1.声明所需的变量privateGallery gallery;privateImageSwitcher imageSwitcher;将7张图片放入/res/drawable目录下,声明一个数组把图片资源放到数组里

private int[] res={R.drawable.grid_view_02,R.drawable.grid_view_03,R.drawable.grid_view_04,R.drawable.grid_view_05,R.drawable.grid_view_06,R.drawable.grid_view_12,R.drawable.grid_view_14};
2.MainActivity.java

package com.example.ch.imageswitchingandshowing;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.view.animation.AnimationUtils;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.ImageSwitcher;import android.widget.ImageView;import android.widget.ViewSwitcher;import java.util.Iterator;public class MainActivity extends AppCompatActivity {    private Gallery gallery;    private ImageSwitcher imageSwitcher;    private int[] res={R.drawable.grid_view_02,R.drawable.grid_view_03,R.drawable.grid_view_04,            R.drawable.grid_view_05,R.drawable.grid_view_06,R.drawable.grid_view_12,R.drawable.grid_view_14};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        gallery=(Gallery)findViewById(R.id.gallery);        imageSwitcher=(ImageSwitcher)findViewById(R.id.imageSwitcher);        //buju        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {            @Override            public View makeView() {                ImageView imageView= new ImageView(MainActivity.this);                imageView.setBackgroundColor(0xff000000);                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);                imageView.setLayoutParams(new ImageSwitcher.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,                        ViewGroup.LayoutParams.MATCH_PARENT));                return imageView;            }        });        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置进入的动态效果,叠进        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
//下面这一步是准备Gallery工作,获得信息。        gallery.setAdapter(new BaseAdapter() {            @Override
//获得<span style="font-family: 宋体;">gallery里的图片个数(item)</span>            public int getCount() {                return res.length;            }            @Override            public Object getItem(int position) {                return position;            }            @Override
<span style="color: rgb(51, 51, 51); font-family: 宋体; font-size: 14px; line-height: 28px; text-indent: 28px; background-color: rgb(249, 249, 249);">//至于getItemId(int position),它返回的是该postion对应item的id</span>            public long getItemId(int position) {                return position;            }            @Override
//得到画廊中的一个图片            public View getView(int position, View convertView, ViewGroup parent) {                ImageView imageView = new ImageView(MainActivity.this);                imageView.setLayoutParams(new Gallery.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));                imageView.setAdjustViewBounds(true);                imageView.setImageResource(res[position]);                return imageView;            }        });
//选中画廊中的item监听事件        gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override
//选中了就将图片给到<span style="font-family: 宋体;">imageSwitcher中</span>            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                imageSwitcher.setImageResource(res[position]);            }            @Override            public void onNothingSelected(AdapterView<?> parent) {            }        });    }}
layout布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.ch.imageswitchingandshowing.MainActivity">    <ImageSwitcher        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/imageSwitcher"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" />    <Gallery        android:layout_width="match_parent"        android:layout_height="60dp"        android:id="@+id/gallery"        android:spacing="20dp"//展览图片时,设置相邻图片的间距        android:gravity="center_vertical"        android:layout_alignBottom="@+id/imageSwitcher"        android:layout_alignParentLeft="true"        android:layout_alignParentStart="true" /></RelativeLayout>
托这两个控件时不要使这两者的区域有重叠部分。

效果如下所示:




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 胳膊骨折了手肿怎么办 耳朵被肘了耳鸣怎么办 耳朵鼓膜外显的怎么办 耳膜破了怎么办为好 耳朵的鼓膜破了怎么办 被打耳鼓膜穿孔怎么办 两只耳朵嗡嗡响怎么办 耳朵长了个脓包怎么办 胸一个大一个小怎么办 把耳朵掏出血了怎么办 掏耳朵戳出血了怎么办 耳朵戳伤流血了怎么办 耳朵挖破出血了怎么办 耳朵让耳屎堵了怎么办 手被牙齿划破了怎么办 耳朵掏伤了很痛怎么办 掏伤耳朵发炎了怎么办 耳朵被掏发炎了怎么办 打的耳洞化脓了怎么办 打了耳洞流脓了怎么办 打了耳洞发炎怎么办 打了耳洞化脓了怎么办 3岁宝宝耳朵流脓怎么办 耳朵里面是湿的怎么办 耳朵里天天很痒怎么办 身上长湿疹很痒怎么办 嗓子干疼耳朵痒怎么办 上火了耳朵嗡嗡响怎么办 太阳凹颧骨外扩怎么办 4岁儿童脊柱侧弯怎么办 瘦的人得多囊怎么办 智齿刚长出来该怎么办 宝宝耳朵睡尖了怎么办 睡觉压的耳朵疼怎么办 月子里奶水越来越少怎么办 月子里生气回奶了怎么办 儿童疫苗本丢了怎么办 跖骨2-5骨折了怎么办 耳朵被水堵住了怎么办 耳朵一直流黄水怎么办 两个月宝宝脐疝怎么办