Android ImageView ImageButton示例
Android ImageView用于显示图像文件。
Android也有一个" ImageButton"。
顾名思义," ImageButton"组件是一个带有图像的按钮。
ImageButton由Android类android.widget.ImageButton表示。
在本教程中,我们将在我们的应用程序中实现android ImageView和ImageButton。
Android ImageView
Android ImageView是用于在应用程序中显示图像的UI小部件之一。
它是通过以下方式在XML布局中定义的。
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@drawable/ic_launcher"
其中" android:src"用于从可绘制资源文件夹中分配图像文件。
Android ImageView ScaleType
android中的ImageView具有不同的配置选项以支持不同的scaleTypes。
scaleType选项用于将图像的边界缩放到图像视图的边界。
以下是受支持的列出的scaleType配置属性。
CENTER:不缩放显示图像在视图中心的位置。
CENTER_CROP:缩放图像,使x和y尺寸均大于或者等于视图,同时保持图像的长宽比;使图像在视图中居中
CENTER_INSIDE:缩放图像以适合视图内部,同时保持图像的宽高比。
如果图像已经小于视图,则与中心相同FIT_CENTER:缩放图像以适合视图内部,同时保持图像的宽高比。
至少一个轴将与视图完全匹配,并且结果在视图内部居中FIT_START:与fitCenter相同,但与视图的左上方对齐
FIT_END:与fitCenter相同,但与视图的右下角对齐
FIT_XY:缩放x和y尺寸以完全匹配视图大小。
d不保持图像宽高比MATRIX:使用提供的Matrix类缩放图像。
可以使用setImageMatrix方法提供矩阵。
Matrix类可用于将变换(例如旋转)应用于图像
FIT_CENTER中的默认scaleType。
注意:fitXY比例类型允许您设置布局中图像的确切尺寸。
但是,由于缩放可能会出现图像的潜在失真。
例如;
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:scaleType="fitXY" android:src="@drawable/ic_launcher"
在Android ImageView中支持多种密度
有一个功能强大的系统可以为正确的设备选择正确的图像资产。
每个设备密度类别都有特定的可绘制文件夹,包括:ldpi(低),mdpi(中),hdpi(高)和xhdpi(超高)等。
例如,drawable-mdpi表示每英寸可绘制的中点。
在这个项目中,我们将在活动中显示各种图像scaleTypes以及一个android图像按钮。
向资源添加图像
我们将使用ImageView显示" png"图像。
PNG是无损的,因此它们比JPG图像具有优势。
我们将图像添加到文件夹" res/drawable-xdpi"," res/drawable-mdpi"或者" res/drawable-hdpi"等文件夹中,具体取决于图像的大小。
Android ImageView,ImageButton示例项目结构
如您所见,我们已经在相应尺寸的可绘制文件夹中添加了Balloon.png文件。
Android ImageView项目代码
xml布局文件包含五个具有不同scaleTypes的图像以及一个ImageButton。
该布局是ScrollView(使活动可滚动)的子级,我们将在后面讨论。
activity_main.xml
<ScrollView xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:src="@drawable/balloon" <ImageView android:id="@+id/imageView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="#fff" android:padding="3dp" android:scaleType="fitXY" android:src="@drawable/balloon" <ImageView android:id="@+id/imageView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="#fff" android:paddingBottom="50dp" android:paddingLeft="3dp" android:paddingRight="3dp" android:paddingTop="3dp" android:scaleType="fitStart" android:src="@drawable/balloon" <ImageView android:id="@+id/imageView4" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="#fff" android:paddingBottom="50dp" android:paddingLeft="3dp" android:paddingRight="3dp" android:paddingTop="3dp" android:scaleType="fitEnd" android:src="@drawable/balloon" <ImageView android:id="@+id/imageView5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="#fff" android:padding="3dp" android:src="@drawable/balloon" <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageButton" android:layout_gravity="center_horizontal" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:src="@android:drawable/ic_menu_send" </LinearLayout> </ScrollView>
MainActivity.java在下面定义。
package com.theitroad.imageview; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //setting image resource from drawable ImageView imageView = (ImageView) findViewById(R.id.imageView2); imageView.setImageResource(R.drawable.balloon); imageView.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Toast.makeText(getApplicationContext(), "Clicked Second Image", Toast.LENGTH_SHORT).show(); } }); ImageButton imageButton=(ImageButton) findViewById(R.id.imageButton); imageButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "Clicked Image Button", Toast.LENGTH_SHORT).show(); } }); Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.balloon); Bitmap bMapScaled = Bitmap.createScaledBitmap(bMap, 350, 300, true); ImageView image = (ImageView) findViewById(R.id.imageView5); image.setImageBitmap(bMapScaled); } }
其中我们使第二个ImageView可单击以显示Toast。
Android ImageButton
Android ImageButton具有普通按钮的所有属性。
它可以选择添加资源文件而不是文本。
使用位图
位图属于android.graphics.Bitmap类。
Bitmapfactory主要用于缩放可绘制图像。
如果我们不使用" BitmapFactory",则会导致内存分配不足。
我们可以将上面显示的ImageView2中显示的位图更改为可绘制资源,就像对imageview2所做的那样。
ImageView image = (ImageView) findViewById(R.id.imageview2); image.setImageResource(R.drawable.balloon);
imageview5没有分配任何scaleType,因此我们使用了静态方法createScaledBitmap(Bitmap src,int dstWidth,int dstHeight,boolean filter)
对其进行缩放。
要将存储中存在的任何文件传递到imageview中,请执行以下代码。
ImageView image = (ImageView) findViewById(R.id.test_image); Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test.png"); image.setImageBitmap(bMap);
setImageBitmap()将位图内容设置为ImageView。
代表最终输出的图像如下所示:
默认情况下,第一个ImageView未被分配任何scaleType。
因此,作为默认scaleType的center被隐式地分配给它。第二个ImageView具有scaleType fitXY。
会看到失真,因此不是在应用程序中使用的好习惯。第三和第四ImageView分别具有scaleType fitStart和fitEnd。
第五个ImageView已使用位图使用自定义的宽度和高度缩放。
这也是我们应用程序的简短动画。
本教程到此结束。
您可以从下面的链接下载最终的Android ImageView项目。