您的位置:首页 > 移动开发 > Android开发

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

2014-03-15 17:16 363 查看
prevision->/article/2469532.html

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

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

接上一篇标号

(四)按钮缩放图片

首先,说一下基本原理。其实很简单,给四个全局变量一个图片是宽、高的当前值,另一个是宽高的缩放比例(这里大家可以定死比如宽高的十分之一)。再有,就是动态获取图片当前的宽高值了。这里不熟悉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;

	}

}


最后是编译后的效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: