android ImageView 详解----按钮控制图片缩放(三)

prevision->http://blog.csdn.net/icedcap/article/details/20844643

大家好,有几天没更新博客了,最近工作很忙,一直没挤出时间。利用周末,也不放松继续接上一篇博客。

  说到图片缩放呢,大家可能对两点触碰缩放图片很感兴趣(的确也很复杂)。那么今天先练练手,做一个简单的,利用按钮来缩放图片。我会将两点触碰缩放图片放到下一篇博文中。(今天就掉一掉大家的胃口,呵呵)

接上一篇标号

(四)按钮缩放图片

   首先,说一下基本原理。其实很简单,给四个全局变量一个图片是宽、高的当前值,另一个是宽高的缩放比例(这里大家可以定死比如宽高的十分之一)。再有,就是动态获取图片当前的宽高值了。这里不熟悉android的初学者可能有点困难,需要复写Activity的onWindowFocusChanged方法,在该方法中来获取图片的宽高值。

        /**
	 * 获取view宽高值
	 */

	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		super.onWindowFocusChanged(hasFocus); // 获取宽高值
		imageWitch = iv.getWidth();
		imageHeigh = iv.getHeight(); // 设置每次增减值
		addWitch = imageWitch / 10;
		addHeigh = imageHeigh / 10;

	}
最后呢就是通过 设置LayoutParams来设置图片的宽高值。需要注意的是这里的LayoutParams是通过上层布局如LinearLayout,就要通过设置LinearLayout.LayoutParams的对象来设置图片宽高值了。

下面是具体实现代码大家可以参考:

package com.icedcap.imageviewtest3;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
	private static final String TAG = "MainActivity";

	private Button b1, b2;
	private ImageView iv;
	private static final int maxWidth = 450;
	private static final int maxHeigh = 500;

	int imageWitch;
	int imageHeigh;
	// 设置每次增减值
	int addWitch;
	int addHeigh;

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

		init();
	}

	private void init() {
		b1 = (Button) findViewById(R.id.button1);
		b2 = (Button) findViewById(R.id.button2);

		iv = (ImageView) findViewById(R.id.imageview);
		b1.setOnClickListener(this);
		b2.setOnClickListener(this);

	}

	@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;
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button1:// +
			if (imageWitch >= maxWidth || imageHeigh >= maxHeigh) {
				Toast.makeText(this, "已经放大到了最大值", Toast.LENGTH_SHORT).show();
			} else {

				imageWitch += addWitch;
				imageHeigh += addHeigh;
				iv.setLayoutParams(new LinearLayout.LayoutParams(imageWitch,
						imageHeigh));
			}
			break;
		case R.id.button2:// -
			if (imageWitch <= 0 || imageHeigh <= 0) {
				Toast.makeText(this, "已经缩小到了最小值", Toast.LENGTH_SHORT).show();
			} else {
				imageWitch -= addWitch;
				imageHeigh -= addHeigh;
				iv.setLayoutParams(new LinearLayout.LayoutParams(imageWitch,
						imageHeigh));
			}
			break;
		}
	}

	/**
	 * 获取view宽高值
	 */

	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		super.onWindowFocusChanged(hasFocus);
		// 获取宽高值
		imageWitch = iv.getWidth();
		imageHeigh = iv.getHeight(); 
		// 设置每次增减值
		addWitch = imageWitch / 10;
		addHeigh = imageHeigh / 10;

	}

}

最后是编译后的效果图:




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值