Android中ImageButton的三种点击效果—点击变化,点一次换一张,逐帧动画的实现

本文详细介绍Android中三种图像交互方式:点击变化效果,通过单次点击切换图片;点一次换一张,实现图片间的切换展示;逐帧动画的实现,展示连续图片形成动画效果。涉及代码配置与实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、点击变化

点击变化是指鼠标点击时,图片发生改变,松开鼠标后,图片还原。

main.xml中的代码:

<ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text1"
        android:contentDescription="@null"
        android:background="@drawable/image"/>

image.xml中的代码:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/a"/>
    <item android:state_pressed="false" android:drawable="@drawable/b"/>
</selector>

二、点一次换一张

main.xml中的代码:

    <ImageButton
        android:id="@+id/ib1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="140dp"
        android:background="@drawable/b"
        android:contentDescription="@null" />

    <ImageButton
        android:id="@+id/ib2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="147dp"
        android:background="@drawable/a"
        android:contentDescription="@null" />

MainActivity.java中的代码:

public class MainActivity extends Activity implements OnClickListener  {
	ImageButton button1;
	ImageButton button2;

	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		// 获得ib1的id
		button1 = (ImageButton) findViewById(R.id.ib1);
		//显示VISIBLE
		button1.setVisibility(View.VISIBLE);

		button2=(ImageButton)findViewById(R.id.ib2);
		//隐藏GONE
		button2.setVisibility(View.GONE);

		button1.setOnClickListener(this);
		button2.setOnClickListener(this);
		

	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
			case R.id.ib1:
				button1.setVisibility(View.GONE);
			    button2.setVisibility(View.VISIBLE);
			    break;
			case R.id.ib2:
				button2.setVisibility(View.GONE);
			    button1.setVisibility(View.VISIBLE);
			    break;
		}
	}

三、逐帧动画的实现

main.xml中的代码:

    <ImageButton
        android:id="@+id/ib3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="260dp"
        android:contentDescription="@null" />

many.xml中的代码:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <item android:drawable="@drawable/ic_19" android:duration="50"/>
    <item android:drawable="@drawable/ic_18" android:duration="50"/>
    <item android:drawable="@drawable/ic_17" android:duration="50"/>
    <item android:drawable="@drawable/ic_16" android:duration="50"/>
    <item android:drawable="@drawable/ic_15" android:duration="50"/>
    <item android:drawable="@drawable/ic_14" android:duration="50"/>
    <item android:drawable="@drawable/ic_13" android:duration="50"/>
    <item android:drawable="@drawable/ic_12" android:duration="50"/>
    <item android:drawable="@drawable/ic_11" android:duration="50"/>
    <item android:drawable="@drawable/ic_10" android:duration="50"/>
    <item android:drawable="@drawable/ic_9" android:duration="50"/>
    <item android:drawable="@drawable/ic_8" android:duration="90"/>
    <item android:drawable="@drawable/ic_7" android:duration="90"/>
    <item android:drawable="@drawable/ic_6" android:duration="90"/>
    <item android:drawable="@drawable/ic_5" android:duration="90"/>
    <item android:drawable="@drawable/ic_4" android:duration="80"/>
    <item android:drawable="@drawable/ic_3" android:duration="80"/>
    <item android:drawable="@drawable/ic_2" android:duration="80"/>
    <item android:drawable="@drawable/ic_1" android:duration="80"/>

</animation-list>

MainActivity.java中的代码:

public class MainActivity extends Activity {
	ImageButton button3;
	AnimationDrawable animationDrawable;
	int flage=0;
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//动画显示
		button3 = (ImageButton) findViewById(R.id.ib3);
		button3.setBackgroundResource(R.drawable.many);
		button3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				animationDrawable=(AnimationDrawable) button3.getBackground();
                //这个判断有问题,还没有想到用一个imagebuttonn怎么才能做到
				if(flage%2==0){
					animationDrawable.start();
					flage++;
				}
				else{
					animationDrawable.stop();
					flage++;
				}
			}
		});
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值