博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ImageView一例
阅读量:4543 次
发布时间:2019-06-08

本文共 3048 字,大约阅读时间需要 10 分钟。

参考自《疯狂android讲义》2.4节

效果如下:

当点击图上某点时,将之附近放大至下图。

布局文件:

 

类文件:

 

 

package com.ljh.imageviewdemo;import com.example.imageviewdemo.R;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.ImageView;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;public class MainActivity extends Activity {	private float alpha = 1.0f;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		final ImageView ivFullPic = (ImageView) findViewById(R.id.iv_full_pic);		final ImageView ivZoomPic = (ImageView) findViewById(R.id.iv_zoom_pic);		final Button btIncreaseAlpha = (Button) findViewById(R.id.bt_plus_alpha);		final Button btDecreaseAlpha = (Button) findViewById(R.id.bt_minus_alpha);		final Button btNextPic = (Button) findViewById(R.id.bt_next);		final int[] images = new int[] { R.drawable.lijiang, R.drawable.qiao,				R.drawable.shuangta, R.drawable.shui, R.drawable.xiangbi };		btNextPic.setOnClickListener(new OnClickListener() {			private int currentImage = 2;			@Override			public void onClick(View v) {				currentImage++;				ivFullPic						.setImageResource(images[currentImage % images.length]);			}		});		btIncreaseAlpha.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				if (alpha > 1) {					//在API11以后,建议使用setAlpha(float),而setAlpha(int) 已经 deprecated。前者取值范围0~1,后者取值范围0~255.					ivFullPic.setAlpha(1.0f);				} else					ivFullPic.setAlpha(alpha += 0.01);			}		});		btDecreaseAlpha.setOnClickListener(new OnClickListener() {			@Override			public void onClick(View v) {				if (alpha < 0) {					ivFullPic.setAlpha(0.0f);				} else					ivFullPic.setAlpha(alpha -= 0.01);			}		});						ivFullPic.setOnTouchListener(new OnTouchListener()		{			@Override			public boolean onTouch(View view, MotionEvent event)			{				BitmapDrawable bitmapDrawable = (BitmapDrawable) ivFullPic						.getDrawable();				// 获取第一个图片显示框中的位图				Bitmap bitmap = bitmapDrawable.getBitmap();				// bitmap图片实际大小与第一个ImageView的缩放比例				double scale = bitmap.getWidth() / 480.0;				// 获取需要显示的图片的开始点				int x = (int) (event.getX() * scale);				int y = (int) (event.getY() * scale);				if (x + 120 > bitmap.getWidth())				{					x = bitmap.getWidth() - 120;				}				if (y + 120 > bitmap.getHeight())				{					y = bitmap.getHeight() - 120;				}				// 显示图片的指定区域				ivZoomPic.setImageBitmap(Bitmap.createBitmap(bitmap						, x, y, 120, 120));				ivZoomPic.setAlpha(alpha);				return false;			}		});	}}

几个知识点:

 

1、根据比例调整图像大小

        android:layout_height="0sp"

        android:layout_weight="3"

        android:layout_height="0sp"

        android:layout_weight="1"

2、注意典型的用匿名内部类作监听器的做法。

3、setAlpha(float)与setAlpha(int)的区别。

4、setImageResource(int)

 

转载于:https://www.cnblogs.com/pangblog/p/3400357.html

你可能感兴趣的文章
PAT甲级——A1050 String Subtraction
查看>>
PAT甲级——A1021 Deepest Root
查看>>
PAT甲级——A1051 Pop Sequence
查看>>
PAT甲级——A1022 Digital Library
查看>>
PAT甲级——A1052 Linked List Sorting
查看>>
PAT甲级——A1026 Table Tennis
查看>>
PAT甲级——A1055 The World's Richest
查看>>
PAT甲级——A1036 Boys vs Girls
查看>>
PAT甲级——A1057 Stack
查看>>
PAT甲级——A1038 Recover the Smallest Number
查看>>
PAT甲级——A1058 A+B in Hogwarts
查看>>
PAT甲级——A1042 Shuffling Machine
查看>>
PAT甲级——A1063 Set Similarity
查看>>
PAT甲级——A1047 Student List for Course
查看>>
PAT甲级——A1054 The Dominant Color
查看>>
PAT甲级——A1075 PAT Judge
查看>>
PAT甲级——A1056 Mice and Rice
查看>>
PAT甲级——A1080 Graduate Admission
查看>>
PAT甲级——A1060 Are They Equal
查看>>
程序编译
查看>>