安卓常用控制元件——按鈕、影象檢視與影象按鈕
目錄
3、ImageView的background和src屬性有什麼區別:
一、按鈕(Button):
1、 繼承於TextView,是一個使用者介面元素,使用者可以利用或點選執行一個動作
參考Android API文件詳情:https://developer.android.google.cn/reference/android/widget/Button
2、常用屬性: text、textSize、textColor、onClick(用於繫結事件處理方法)
二、圖象檢視(Image View)
1、繼承於View,ImageView是顯示影象資源,例如點陣圖或可拉的資源。ImageView也是常用的顏色應用於影象和處理影象縮放。
參考 Android API文件詳情:https://developer.android.google.cn/reference/android/widget/ImageView
2、在XML中的屬性:
android:adjustViewBounds:設定為真,如果你希望ImageView調整其保護可拉的長寬比的範圍。
android:baseline:在這個檢視基線的偏移量。
android:baselineAlignBottom:如果這是真的(true),影象檢視將基線與基於它的底部邊緣
android:copTopadding:如果這是真的(true),影象將裁剪適合填充。
android:maxHeight:可選引數為這一觀點提供一個最大高度。
android:maxWeidth:可選引數為這一觀點提供一個最大寬度。
android:scaleType:控制應該如何調整影象或搬到這個ImageView的大小相匹配
android:src: 用於設定圖片源
android :tint:對影象蒙版著色
android:background(用於設定背景圖片)
android:tintMode:混合模式用於應用影象色彩。
3、ImageView的background和src屬性有什麼區別:
background是指背景,src是指內容之所以有這兩個,是考慮到src如果是PNG格式等有透明屬性的圖片的話,就會在透明的地方顯示出設定的background的背景,而不是黑色或者其他系統預設的填充色等。這樣也是有助於美觀 的。 background 就是背景 src 指的是 ImageView 要顯示的影象。 背景就是在後面的東西,不會前來干擾前面的 src
三、影象按鈕(ImageButton)
1、繼承於 ImageView,顯示一個按鈕和一個影象(而不是文字),可按下或由使用者點選。預設情況下,一個ImageButton看上去就像一個普通的按鈕,與標準按鈕背景顏色變化 在不同按鈕的狀態。影象表
面 的按鈕是通過定義android:src屬性的< ImageButton > XML元素或ImageView.setImageResource(int)方法。
參考 Android API文件詳情:https://developer.android.google.cn/reference/android/widget/ImageButton
2、 重要屬性:src(用於設定圖片源)、background(用於設定背景圖片)
案例
在佈局檔案設定兩個按鈕、和一個圖片按鈕,和一個圖片檢視
1、案例分析:
對三個按鈕實現按鈕監聽,想縮小和放大圖片就需要得到影象的尺寸,
通過通過影象檢視物件的getLayoutParams()方法得到佈局引數物件,然後再利用佈局引數物件提供的width與height屬性即可獲得影象的尺寸。
imageWidth = ivBear.getLayoutParams().width;
imageHeight = ivBear.getLayoutParams().height;
對放大圖片的監聽,我們還需要獲得手機螢幕的大小來判斷圖片是否出界:
screenWidtn=getWindowManager().getDefaultDisplay().getWidth();
srceenHeight=getWindowManager().getDefaultDisplay().getHeight();
2、程式碼:
(1)佈局資原始檔activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<Button
android:id="@+id/btn_minus"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="縮小圖片"
android:textSize="15sp"
android:layout_margin="10dp"
android:background="#ff0000"
android:onClick="doMinus"/>
<Button
android:id="@+id/btn_plus"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_margin="10dp"
android:text="放大圖片"
android:textSize="15sp"
android:background="#ff0000"
android:onClick="doPlus"/>
<ImageButton
android:id="@+id/btn_exit"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_margin="10dp"
android:src="@mipmap/stop"
android:onClick="doExit"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
>
<ImageView
android:id="@+id/iv_bear"
android:layout_width="200dp"
android:layout_height="300dp"
android:src="@mipmap/zadan"
/>
</LinearLayout>
</LinearLayout>
(2)主介面類MainActivity
package com.example.a13468.mydemo15_button;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
//圖象檢視
private ImageView ivBear;
//圖象高度
private double imageWidth;
//影象寬度
private double imageHeight;
//螢幕寬度
private double screenWidtn;
//螢幕高度
private double srceenHeight;
//縮放比例
private double zoomScale=0.9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivBear=findViewById(R.id.iv_bear);
//獲得螢幕尺寸
screenWidtn=getWindowManager().getDefaultDisplay().getWidth();
srceenHeight=getWindowManager().getDefaultDisplay().getHeight();
//獲得影象尺寸
imageHeight=ivBear.getLayoutParams().height;
imageWidth=ivBear.getLayoutParams().width;
}
/**
* 縮小圖片點選事件
*/
public void doMinus(View view){
//獲得圖象新尺寸
int newWidth= (int) (ivBear.getLayoutParams().width*zoomScale);
int newHeight= (int) (ivBear.getLayoutParams().height*zoomScale);
if (newWidth>40){
ivBear.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));
}else{
Toast.makeText(this, "不能再縮小啦,不然看不見啦", Toast.LENGTH_SHORT).show();
}
}
/**
* 放大圖片點選事件
*/
public void doPlus(View view){
//獲得圖象新尺寸
int newWidth= (int) (ivBear.getLayoutParams().width/zoomScale);
int newHeight= (int) (ivBear.getLayoutParams().height/zoomScale);
// 按新尺寸設定影象(不能縮小為零,否則不能再放大)
if (ivBear.getLayoutParams().width<screenWidtn){
ivBear.setLayoutParams(new LinearLayout.LayoutParams(newWidth, newHeight));
}else{
Toast.makeText(this, "溫馨提示:圖片不能再放大,要不然就出界咯!", Toast.LENGTH_SHORT).show();
}
}
/**
* 退出應用程式
*
* @param view
*/
public void doExit(View view){
finish();
}
}