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;
}
}
最后是编译后的效果图: