ImageView的学习
学习安卓时我还是习惯看懂手册,虽然是英文但是可以获得的东西必然也是更多的,否则自己只能停留在拾人牙缝的水平,虽然我是初学,但是还是分享一些自己的学习过程及方法。
从手册中我们看以知道,ImageView继承自View组件,它的类概述中说到:它可以显示任意图象,例如一个图标。 ImageView的类可以装载从各种来源的图像(诸如资源或内容提供者),获取从图像计算它的测量,以便它可以在任何布局管理器使用的护理,并提供了不同的显示选项诸如缩放和着色。除此之外,我们还知道它派生了ImageButton、QuickContactBadge、ZoomButton组件,因此ImageView支持的XML属性和方法基本也可以用于这几个组件。
手册中列出的ImageView支持的XML属性及相关方法:

翻译了些常用的:

相关属性值大家可以参考手册。
接下来,通过对ImageView的学习写了个图片浏览器的实验。
定义XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<Button android:id="@+id/plus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="增大透明度"/>
<Button android:id="@+id/minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="降低透明度"/>
<Button android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一张"/>
</LinearLayout>
<!-- 定义显示图片整体的ImageView -->
<ImageView android:id="@+id/image1"
android:layout_width="match_parent"
android:layout_height="270dp"
android:src="@drawable/heye"
android:scaleType="fitCenter" />
<!-- 定义显示图片局部细节的ImageView -->
<ImageView android:id="@+id/image2"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="#00f"
android:layout_margin="10dp" />
</LinearLayout>
定义主函数:
package happy.imageview; import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity
{
// 定义一个访问图片的数组
int[] images = new int[]{
R.drawable.lijiang,
R.drawable.qiao,
R.drawable.shuangta,
R.drawable.shui,
R.drawable.xiangbi,
};
// 定义默认显示的图片
int currentImg = 2;
// 定义图片的初始透明度
private int alpha = 255;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test );
final Button plus = (Button) findViewById(R.id.plus);
final Button minus = (Button) findViewById(R.id.minus);
final ImageView image1 = (ImageView) findViewById(R.id.image1);
final ImageView image2 = (ImageView) findViewById(R.id.image2);
final Button next = (Button) findViewById(R.id.next);
// 定义查看下一张图片的监听器
next.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// 控制ImageView显示下一张图片
image1.setImageResource(
images[++currentImg % images.length]);
}
});
// 定义改变图片透明度的方法
View.OnClickListener listener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (v == plus)
{
alpha += 20;
}
if (v == minus)
{
alpha -= 20;
}
if (alpha >= 255)
{
alpha = 255;
}
if (alpha <= 0)
{
alpha = 0;
}
// 改变图片的透明度
image1.setImageAlpha(alpha);
}
};
// 为两个按钮添加监听器
plus.setOnClickListener(listener);
minus.setOnClickListener(listener);
image1.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent event)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) image1
.getDrawable();
// 获取第一个图片显示框中的位图
Bitmap bitmap = bitmapDrawable.getBitmap();
System.out.println(bitmap.getWidth());
System.out.println(image1.getWidth());
// bitmap图片实际大小与第一个ImageView的缩放比例
double scale = 1.0 * bitmap.getHeight() / image1.getHeight();
// 获取需要显示的图片的开始点
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;
}
// 显示图片的指定区域
image2.setImageBitmap(Bitmap.createBitmap(bitmap
, x, y, 120, 120));
image2.setImageAlpha(alpha);
return false;
}
});
}
}
结果:

ImageView的学习的更多相关文章
- Android学习笔记⑥——UI组件的学习ImageView相关
ImageView是集成了View的组件,它的主要工作就是显示一些图片啊,虽然他的用法一句话概括了,但是我觉得学起来应该不会太简单,正所谓 短小而精悍么 :) ImageView 派生了 ImageB ...
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...
- Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...
- 安卓开发学习日记 DAY3——TextView,EditView,ImageView
今天学习了一些控件的使用方法,包括TextView,EditView,ImageView 1.TextView,输出一个文本呗 主要属性有 android:id 标志 android:layout_w ...
- iOS学习-UIButton的imageView和titleLabel
UIButton的imageView和titleLabel的位置设置通过setImageEdgeInsets和setTitleEdgeInsets来设置 参考:http://blog.csdn.net ...
- ImageView学习
package liu.roundimagedemo.view; import android.content.Context; import android.graphics.Bitmap; imp ...
- android学习笔记之ImageView的scaleType属性
我们知道,ImageView有一个属性叫做scaleType,它的取值一共有八种,分别是:matrix,fitXY,fitStart,fitCenter,fitEnd,center,centerCro ...
- Android UI学习 - GridView和ImageView的使用
GridView: A view that shows items in two-dimensional scrolling grid. The items in the grid come from ...
- Android学习笔记:如何设置ImageView中图片的显示方式
我们在用ImageView显示图片时,很多情况下图片的大小与ImageView的尺寸不是完全一样的.这时就涉及到该如何设置显示图片了. ImageView有个重要的属性是ScaleType,该属性用以 ...
随机推荐
- JQuery学习笔记【CSS选择符】--02
Jquery的程序入口: <html> <head> <title></title> <script type="text/javasc ...
- 在PyQt4中使用matplotlib
matplotlib作为Python中著名的数据可视化工具,其官网也提供了在PyQt4中使用的源码,这里举一个应用实例,以备不时之需. 1) 利用Qt Designer创建GUI界面 Demo的GUI ...
- 折半插入排序(Binary Insertion Sort)的C语言实现
原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia 折半插入排序(Binary Insertion Sort)的基本思想是将新记录插入到已经 ...
- [Apio2014]回文串
http://www.lydsy.com:808/JudgeOnline/problem.php?id=3676 这是一道回文树裸题,具体如何建图见http://blog.csdn.net/u0133 ...
- JS简易时钟
HTML <div id="clock"> <span></span>:<span></span>:<span&g ...
- Scut 进阶:Schema 自动检测
Scut 在启动时有一个自动根据代码中数据类型检查数据库字段的功能,要如何使用呢? 脚本引擎动态加载 ModelAssembly: ScriptEngine.cs - InitScriptRuntim ...
- tomcat jar包加载顺序
加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的java扩展jar包 3. java -classpath/-Djava ...
- 001Spark文件分析测试
使用spark-1.4.1-bin-hadoop2.6进行处理,测试文件大小为3G, 测试结果: 1:统计一个文件中某个字符的个数 scala> sc.textFile("/home/ ...
- FLASK安装--兼收EZ_INSTALL及PIP
参考URL: http://www.cnblogs.com/haython/p/3970426.html http://www.pythondoc.com/flask/installation.htm ...
- [转]Kafka/Metaq设计思想学习笔记
收集的一些kafka的信息: http://my.oschina.net/geecoodeer/blog/194829