1. 程式人生 > >安卓常用控制元件——按鈕、影象檢視與影象按鈕

安卓常用控制元件——按鈕、影象檢視與影象按鈕

目錄

 

一、按鈕(Button):

二、圖象檢視(Image View)

  2、在XML中的屬性:

    3、ImageView的background和src屬性有什麼區別:

三、影象按鈕(ImageButton)

案例

1、案例分析:

2、程式碼:

     (1)佈局資原始檔activity_main.xml

(2)主介面類MainActivity


一、按鈕(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();
    }
}