Android基础——高级UI组件:图像视图和图片切换器

layout代码

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

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/a"
        />
    <!--限制长宽-->
    <ImageView
        android:layout_width="70dp"
        android:layout_height="100dp"
        android:background="#FF0000"
        android:src="@drawable/a"
        />

    <!--适应长宽,拉伸-->
    <ImageView
        android:layout_width="70dp"
        android:layout_height="100dp"
        android:scaleType="fitXY"
        android:src="@drawable/a"
        android:tint="#66FF0000"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxHeight="90dp"
        android:minWidth="200dp"
        android:src="@drawable/a"
        android:adjustViewBounds="true"
        />

    <ImageSwitcher
        android:id="@+id/imageswitcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        />

</LinearLayout>

java调用代码

package com.example.myhighuii;

import androidx.appcompat.app.AppCompatActivity;

import android.media.Image;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

public class MainActivity extends AppCompatActivity {

    ImageSwitcher imageSwitcher = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageSwitcher = (ImageSwitcher) findViewById(R.id.imageswitcher);
        //淡出效果
        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
                MainActivity.this,android.R.anim.fade_out
        ));
        //渐入效果
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
                MainActivity.this,android.R.anim.fade_in
        ));

        //制定一个输出工厂
        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                //为图像切换器指定图像
                ImageView imageView = new ImageView(MainActivity.this);
                //为其指定一张默认加载图片
                imageView.setImageResource(R.drawable.a);
                return imageView;
            }
        });

        //为图像切换器设置监听器
        imageSwitcher.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //参数v就是imageSwitcher
                ((ImageSwitcher)v).setImageResource(R.drawable.b);
            }
        });
    }
}

呈现效果

多图片的循环切换器实现

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

    <ImageSwitcher
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageSwitcher">
    </ImageSwitcher>

</LinearLayout>

java调用

package com.example.myhighuiii;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

public class MainActivity extends AppCompatActivity {

   private int[] arrayPicture = new int[]{
           R.mipmap.a, R.mipmap.b, R.mipmap.c
   };
   private ImageSwitcher imageSwitcher = null;
   private int index = 0;
   private float touchDownX;//手指按下的X坐标
   private float touchUpX;//手指抬起的X坐标

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher);
        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imageView = new ImageView(MainActivity.this);
                imageView.setImageResource(arrayPicture[index]);//当前要显示的图片
                return imageView;
            }
        });

        //设置事件监听器
        imageSwitcher.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //如果触发了按下事件
                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    touchDownX = event.getX();
                    return true;
                }
                else if(event.getAction()==MotionEvent.ACTION_UP){//触发了抬起事件
                    touchUpX=event.getX();
                    if(touchUpX-touchDownX>100){//认为是从左向右滑动的,往前走一步
                        index= index==0 ? arrayPicture.length-1 : index-1;
                        //设置淡入淡出
                        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
                                MainActivity.this,android.R.anim.fade_in
                        ));
                        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
                                MainActivity.this,android.R.anim.fade_out
                        ));
                        //设置切换的图片资源
                        imageSwitcher.setImageResource(arrayPicture[index]);
                    }
                    else if(touchUpX-touchDownX<-100){//认为是从右向左滑动的
                        index = index==arrayPicture.length-1 ? 0 : index+1;
                        //设置淡入淡出
                        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(
                                MainActivity.this,android.R.anim.fade_in
                        ));
                        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(
                                MainActivity.this,android.R.anim.fade_out
                        ));
                        //设置切换的图片资源
                        imageSwitcher.setImageResource(arrayPicture[index]);
                    }
                    return true;
                }
                return false;
            }
        });
    }
}

原文地址:https://www.cnblogs.com/zsben991126/p/12232620.html

时间: 2024-10-06 20:13:33

Android基础——高级UI组件:图像视图和图片切换器的相关文章

Android基础——高级UI组件:下拉框,列表,滚动条视图

布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.andr

Android基础——高级UI组件:选项卡

布局文件 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.c

Android界面编程——Android高级UI组件(三)

Android界面编程 Android高级UI组件 2.4.1适配器组件 适配器的作用 适配器充当适配器控件和该视图数据之间的桥梁.适配器提供访问的数据项,并负责产生数据组中的每个项的视图. 常用的适配器 BaseAdapter:抽象类,具有较高的灵活性. ArrayAdapter:最为简单,智能展示一行文字. SimpleAdapter:有较好的扩充性,可以自定义出各种效果. SimpleCursorAdapter:主要用于操作数据库. 常用的适配器控制 适配器控件扩展自ViewAdapter

Android基础之四大组件---Activity

Android基础之四大组件-Activity 1.什么是Activity 2.Activity生命周期 3.Activity生命周期演示 4.Activity之间的通信 5.Activity之加载模式 6.Activity的栈式管理 1.什么是Activity? Activity是用户接口程序,它是Android应用程序的基本功能单元,它的主要功能是提供界面.Activity是Android的核心类,该类的全名是android.app.Activity.Activity相当于C/S程序中的窗体

1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器

1 //引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js"></script> //引入 jQuery EasyUI 核心库,这里采用的是 1.3.6 <scripttype="text/javascript"src="easyui/jquery.easyui.min.js"><

Android基础入门教程——10.2 SmsManager(短信管理器)

Android基础入门教程--10.2 SmsManager(短信管理器) 标签(空格分隔): Android基础入门教程 本节引言: 本节带来的是Android中的SmsManager(短息管理器),见名知意,就是用来管理手机短信的, 而该类的应用场景并不多,一般是我们发短信的时候才会用到这个API,当然这种短信是 文字短信,对于彩信过于复杂,而且在QQ微信各种社交APP横行的年代,你会去发1块钱一条的 彩信吗?所以本节我们只讨论发送普通文字短信! 官方文档:SmsManager 1.调用系统

Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法

网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似性.GridView和ListView的主要区别在于:ListView只是一个方向上的分布:而GridView则会在两个方向上分布. 与ListView相似的是,GridView也需要通过Adapter来提供显示数据:可以通过SimpleAdapter来为GridView提供数据,也可以通过开发Ba

Android经常使用UI组件 - Button

button(Button)是Android其中一个经常使用的UI组件.非常小可是在开发中最经常使用到.一般通过与监听器结合使用.从而触发一些特定事件. Button继承了TextView.它的功能就是提供一个button,这个button能够供用户点击.当用户对button进行操作的时候,触发对应事件,如点击.触摸.一般对于一个button而言,用的最多的就是点击事件,Button间接继承自View.而Android UI中的全部事件.都是定义在View中的. 实例:ButtonDemo 执行

Android 高级UI设计笔记12:ImageSwitcher图片切换器

1. ImageSwitcher ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊.做相册一绝 2. 重要方法 setImageURI(Uri uri):设置图片地址 setImageResource(int resid):设置图片资源库 setImageDrawable(Drawable drawable):绘制图片 3. 设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAni