Android 通过触摸放大图片之后还原

这篇博客分享了如何在Android应用中通过触摸操作实现图片的放大和随后的还原功能。提供了具体的Java代码示例,并附带了代码链接供读者下载参考。

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

本文代码例子:http://pan.baidu.com/s/1rDY6o

直接上Java代码


package com.example.android_test_scrollview;


import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.app.Activity;



public class MainActivity extends Activity implements OnTouchListener,AnimationListener{

	private ImageView bgnImageView;
	
	private float proviousPoint;
	private float currentPoint;
	private float offsubPoint;
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
//		RelativeLayout rl = ((RelativeLayout)myListView.setHeaderView(getLayoutInflater().inflate(R.layout.activity_main, myListView,false)););
		
		RelativeLayout rl = ((RelativeLayout)getLayoutInflater().inflate(R.layout.activity_main	, null));
		
		rl.setOnTouchListener(this);
		setContentView(rl);
		
		bgnImageView = (ImageView)findViewById(R.id.bgIm);
		bgnImageView.setScaleX(1.2f);
		
		
	}
	
	
	



	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			
			proviousPoint = event.getY();
			
			break;
		case MotionEvent.ACTION_MOVE:
			currentPoint = event.getY();
			offsubPoint = (currentPoint - proviousPoint )  / (40 *bgnImageView.getScaleY());
			System.out.println("zz" + offsubPoint);
			if (offsubPoint >= 0.5f) {
				offsubPoint = 0.5f;
			}
			bgnImageView.setScaleX(1 + offsubPoint);
			bgnImageView.setScaleY(1 + offsubPoint);
			
			
			break;
		case MotionEvent.ACTION_UP:
			bgnImageView.setScaleY(1);
			bgnImageView.setScaleX(1);
			bgScaleAnimation(2f);
			break;

		default:
			break;
		}
		
		return true;
	}

	
	
	public void bgScaleAnimation(float params) {
		ScaleAnimation scaleAnimation = new ScaleAnimation(1.5f, 1f, 1.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
		scaleAnimation.setDuration(1000);
		scaleAnimation.setFillAfter(true);
		bgnImageView.startAnimation(scaleAnimation);
		
	}






	@Override
	public void onAnimationEnd(Animation animation) {
		// TODO Auto-generated method stub
		
		bgnImageView.setScaleX(1);
		bgnImageView.setScaleY(1);
	}






	@Override
	public void onAnimationRepeat(Animation animation) {
		// TODO Auto-generated method stub
		
	}






	@Override
	public void onAnimationStart(Animation animation) {
		// TODO Auto-generated method stub
		
	}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值