日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android零基础入门第24节:自定义View简单使用

發布時間:2025/3/15 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android零基础入门第24节:自定义View简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android零基礎入門第24節:自定義View簡單使用 原文:Android零基礎入門第24節:自定義View簡單使用

當我們開發中遇到Android原生的組件無法滿足需求時,這時候就應該自定義View來滿足這些特殊的組件需求。

?

一、概述

很多初入Android開發的程序員,對于Android自定義View可能比較恐懼,但這又是高手進階的必經之路,這里先不做過多學習,只是簡單了解。關于高階的內容會在后續課程陸續進行學習,歡迎關注分享達人秀(ShareExpert)獲取第一手教程。

如果說要按類型來劃分的話,自定義View的實現方式大概可以分為三種:自繪控件、組合控件、以及繼承控件。

  • 自繪控件:內容都是開發者自己繪制出來的,一般在View的onDraw方法中完成繪制。

  • 組合控件:就是將一些小的控件組合起來形成一個新的控件,這些小的控件多是系統自帶的控件。比如很多應用中普遍使用的標題欄控件,其實用的就是組合控件。

  • 繼承控件:繼承已有的控件,創建新控件,保留繼承的父控件的特性,并且還可以引入新特性。

?

二、方法

介于目前掌握的Android基礎知識較為薄弱,本節先簡單學習一下自繪控件。首先定義一個繼承View基類的子類,然后重寫View 類的一個或多個方法。通常可以被用戶重寫的方法如下。

  • 構造器:重寫構造器是定制View的最基本方式,當Java代碼創建一個View實例,或根據XML布局文件加載并構建界面時將需要調用該構造器。

  • onFinishInflate():這是一個回調方法,當應用從XML布局文件加載該組件并利用它 來構建界面之后,該方法將會被回調。

  • onMeasure(int, int):調用該方法來檢測View組件及其所包含的所有子組件的大小。

  • onLayout(boolean, int, int, int, int):當該組件需要分配其子組件的位置、大小時,該方法就會被回調。

  • onSizeChanged(int, int, int, int):當該組件的大小被改變時回調該方法。

  • onDraw(Canvas):當該組件將要繪制它的內容時回調該方法進行繪制。

  • onKeyDown(int, KeyEvent):當某個鍵被按下時觸發該方法。

  • onKeyUp(int, KeyEvent):當松開某個鍵時觸發該方法。

  • onTrackballEvent(MotionEvent):當發生軌跡球事件時觸發該方法。

  • onTouchEvent(MotionEvent):當發生觸摸屏事件時觸發該方法。

  • onFocusChanged (boolean gainFocus, int direction, Rect previouslyFocusedRect):當該組件焦點發生改變時觸發該方法。

  • onWindowFocusChanged(boolean):當包含該組件的窗口失去或得到焦點時觸發該方法。

  • onAttachedToWindow():當把該組件放入某個窗口時觸發該方法。

  • onDetachedFromWindow():當把該組件從某個窗口上分離時觸發該方法。

  • onWindowVisibilityChanged(int):當包含該組件的窗口的可見性發生改變時觸發該方法。

當需要開發自定義View時,開發者并不需要重寫上面列出的所有方法,而是可以根據業務需要重寫其中部分方法。

?

三、示例

下面就實現一個簡單的計數器,每點擊它一次,計數值就加1并顯示出來。

在src/main/java文件下創建新包com.jinyu.cqkxzsxy.android.widgetsample.view,再新建一個CounterView.java文件,其代碼如下:

package com.jinyu.cqkxzsxy.android.widgetsample.view;import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.view.View;/*** @創建者 鑫鱻* @描述 Android零基礎入門到精通系列教程,歡迎關注微信公眾ShareExpert*/public class CounterView extends View {// 定義畫筆private Paint mPaint;// 用于獲取文字的寬和高private Rect mBounds;// 計數值,每點擊一次本控件,其值增加1private int mCount = 0;public CounterView(Context context, AttributeSet attrs) {super(context, attrs);// 初始化畫筆、RectmPaint = new Paint(Paint.ANTI_ALIAS_FLAG);mBounds = new Rect();// 本控件的點擊事件setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {mCount ++;// 重繪 invalidate();}});}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);mPaint.setColor(Color.BLUE);// 繪制一個填充色為藍色的矩形canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint);mPaint.setColor(Color.YELLOW);mPaint.setTextSize(50);String text = String.valueOf(mCount);// 獲取文字的寬和高mPaint.getTextBounds(text, 0, text.length(), mBounds);float textWidth = mBounds.width();float textHeight = mBounds.height();// 繪制字符串canvas.drawText(text, getWidth() / 2 - textWidth / 2, getHeight() / 2+ textHeight / 2, mPaint);} }

關于里面的代碼不懂也沒有關系,后續會詳細進行學習的。

到res/layout/目錄下創建一個counterview_layout.xml文件,然后在其中填充如下代碼片段:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.jinyu.cqkxzsxy.android.widgetsample.view.CounterViewandroid:id="@+id/counter_view"android:layout_width="100dp"android:layout_height="100dp"/> </LinearLayout>

然后修改一下app/src/java/MainActivity.java文件中加載的布局文件為新建的counterview_layout.xml文件。

運行程序,點擊自定義的計數控件,會發現每點擊一次控件里面的值+1,如下圖所示效果。

至此,一些Android開發中一些常用的控件學習完畢,還記得學過哪些控件嗎?都掌握的如何?我們從下一期開始一起來學習Android中的界面布局。

?

今天就先到這里,如果有問題歡迎留言一起探討,也歡迎加入Android零基礎入門技術討論微信群,共同成長!

此文章版權為微信公眾號分享達人秀(ShareExpert)——鑫鱻所有,若轉載請備注出處,特此聲明!

?

往期總結分享:

Android零基礎入門第1節:Android的前世今生

Android零基礎入門第2節:Android 系統架構和應用組件那些事

Android零基礎入門第3節:帶你一起來聊一聊Android開發環境

Android零基礎入門第4節:正確安裝和配置JDK, 高富帥養成第一招

Android零基礎入門第5節:善用ADT Bundle, 輕松邂逅女神

Android零基礎入門第6節:配置優化SDK Manager, 正式約會女神

Android零基礎入門第7節:搞定Android模擬器,開啟甜蜜之旅

Android零基礎入門第8節:HelloWorld,我的第一趟旅程出發點

Android零基礎入門第9節:Android應用實戰,不懂代碼也可以開發

Android零基礎入門第10節:開發IDE大升級,終于迎來了Android Studio

Android零基礎入門第11節:簡單幾步帶你飛,運行Android Studio工程

Android零基礎入門第12節:熟悉Android Studio界面,開始裝逼賣萌

Android零基礎入門第13節:Android Studio配置優化,打造開發利器

Android零基礎入門第14節:使用高速Genymotion,跨入火箭時代

Android零基礎入門第15節:掌握Android Studio項目結構,揚帆起航

Android零基礎入門第16節:Android用戶界面開發概述

Android零基礎入門第17節:TextView屬性和方法大全

Android零基礎入門第18節:EditText的屬性和使用方法

Android零基礎入門第19節:Button使用詳解

Android零基礎入門第20節:CheckBox和RadioButton使用大全

Android零基礎入門第21節:ToggleButton和Switch使用大全

Android零基礎入門第22節:ImageView的屬性和方法大全

Android零基礎入門第23節:ImageButton和ZoomButton使用大全

posted on 2017-08-12 10:39 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/7349212.html

總結

以上是生活随笔為你收集整理的Android零基础入门第24节:自定义View简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。