android图片切换ImageSwichter的动画切换效果

举报
择城终老 发表于 2021/07/27 01:01:59 2021/07/27
【摘要】 activity_main.xml 控件的线性布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_heig...

activity_main.xml

控件的线性布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

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

<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/butPrevious"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="上一张图片"/>
<Button
android:id="@+id/butNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一张图片"/>
</LinearLayout>
</LinearLayout>

MainActivity.java

package com.example.imageswitcherproject;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {
private Button butPrevious=null;//上一张图片按钮
private Button butNext=null;//下一张图片按钮
private ImageSwitcher imageSwitcher=null;
private int[] imgRes={R.drawable.ispic_a,R.drawable.ispic_b,
R.drawable.ispic_c,R.drawable.ispic_d,
R.drawable.ispic_e};//图片控件的ID
private int foot=0;//记录图片的下标
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.butPrevious=(Button)super.findViewById(R.id.butPrevious);
this.butNext=(Button)super.findViewById(R.id.butNext);
this.imageSwitcher=(ImageSwitcher)super.findViewById(R.id.imageSwitcher);
this.imageSwitcher.setFactory(new OnFactorylmpl());//设置转换工厂
this.imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置动画
this.imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置动画
this.imageSwitcher.setImageResource(this.imgRes[foot++]);//设置初始图片
this.butPrevious.setOnClickListener(new OnClickListenerPrevious());
this.butNext.setOnClickListener(new OnClickListenerNext());
}

private void checkButEnable(){//设置按钮状态
if(this.foot<this.imgRes.length-1){
this.butNext.setEnabled(true);
}else{
this.butNext.setEnabled(false);
}
if(this.foot==0){
this.butPrevious.setEnabled(false);
}else{
this.butPrevious.setEnabled(true);
}
}

private class OnClickListenerNext implements OnClickListener{//监听按钮

@Override
public void onClick(View v) {
MainActivity.this.imageSwitcher.setImageResource(MainActivity.this.imgRes[MainActivity.this.foot++]);
MainActivity.this.checkButEnable();
}
}

private class OnClickListenerPrevious implements OnClickListener{//监听按钮

@Override
public void onClick(View v) {
MainActivity.this.imageSwitcher.setImageResource(MainActivity.this.imgRes[MainActivity.this.foot--]);
MainActivity.this.checkButEnable();
}

}

private class OnFactorylmpl implements ViewFactory{

@Override
public View makeView() {
ImageView image=new ImageView(MainActivity.this);//创建图片控件
image.setBackgroundColor(0xFFFFFFFF);//设置背景颜色
image.setScaleType(ImageView.ScaleType.CENTER); //设置显示方式
image.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));//定义组建
return image;
}

}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

文章来源: liyuanjinglyj.blog.csdn.net,作者:李元静,版权归原作者所有,如需转载,请联系作者。

原文链接:liyuanjinglyj.blog.csdn.net/article/details/9172955

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。