日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发自定义View

發布時間:2025/4/16 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发自定义View 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Android中View組件的作用類似于Swing變成中的JPanel,它只是一個空白的矩形區域,View組件中沒有任何內容。對于Android應用的其他UI組件來說,它們都繼承了View組件,然后在View組件提供的空白區域繪制外觀。

  當Android系統提供的UI組件不足以滿足項目需求時,我們可以通過繼承View并重寫View類的一個或多個方法來自定義組件。

  通常可以被用戶重寫的方法如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

    14.onDetachedFromWindow():當把該組件從某個窗口中分離時觸發該方法

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

  當我們在開發自定義View時,通常僅需根據業務需求重寫上面的部分方法,如果自定義組件僅僅只是組合現有的組件那就更加簡單了,僅僅實現自定義組件的構造器然后使用LayoutInflater加載布局文件即可。

?⒈實例自定義View

1 package cn.coreqi.view; 2 3 import android.content.Context; 4 import android.graphics.Canvas; 5 import android.graphics.Color; 6 import android.graphics.Paint; 7 import android.util.AttributeSet; 8 import android.view.MotionEvent; 9 import android.view.View; 10 11 public class DrawView extends View { 12 private float currentX = 40f; 13 private float currentY = 50f; 14 15 //定義并創建畫筆 16 private Paint p = new Paint(); 17 18 public DrawView(Context context) { 19 super(context); 20 } 21 22 public DrawView(Context context, AttributeSet attrs) { 23 super(context, attrs); 24 } 25 26 //當該組件將要繪制它的內容時觸發該方法 27 @Override 28 protected void onDraw(Canvas canvas) { 29 super.onDraw(canvas); 30 //設置畫筆的顏色 31 p.setColor(Color.RED); 32 //繪制一個小圓(作為小球) 33 canvas.drawCircle(currentX,currentY,15F,p); 34 } 35 36 //為該組件的觸碰事件重寫事件處理方法 37 @Override 38 public boolean onTouchEvent(MotionEvent event) { 39 //修改currentX,currentY兩個成員變量 40 currentX = event.getX(); 41 currentY = event.getY(); 42 //通知當前組件重新繪制自己 43 invalidate(); 44 //返回true表明該處理方法已經處理該事件 45 return true; 46 } 47 }

⒉在代碼中創建自定義View

1 package cn.coreqi; 2 3 import androidx.appcompat.app.AppCompatActivity; 4 5 import android.os.Bundle; 6 import android.widget.LinearLayout; 7 import cn.coreqi.view.DrawView; 8 9 10 public class MainActivity extends AppCompatActivity { 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 //新建LinearLayout布局容器 16 LinearLayout layout = new LinearLayout(this); 17 //設置該Activity顯示layout 18 setContentView(layout); 19 //創建我們自定義的View組件 20 DrawView draw = new DrawView(this); 21 //設置自定義組件的最小寬度、高度 22 draw.setMinimumWidth(300); 23 draw.setMinimumHeight(500); 24 layout.addView(draw); 25 } 26 }

⒊在XML布局文件中創建自定義View

1 <?xml version="1.0" encoding="utf-8"?> 2 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MainActivity"> 8 9 <cn.coreqi.view.DrawView 10 android:id="@+id/drawView" 11 android:layout_width="match_parent" 12 android:layout_height="match_parent" /> 13 14 </androidx.constraintlayout.widget.ConstraintLayout>

?

轉載于:https://www.cnblogs.com/fanqisoft/p/11017395.html

總結

以上是生活随笔為你收集整理的Android开发自定义View的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 涩色网| 久久久久久毛片 | 男人和女人在床的app | 成人高潮片免费网站 | 久久久久久福利 | 国产亚洲欧美精品久久久久久 | 国产精品欧美性爱 | 少妇天堂网 | 亚洲激情网 | 国产网红主播精品av | 日本v片 | 成人伊人| 久久精品国产99国产精品 | 婷婷社区五月天 | 日韩成人在线一区 | 男人与雌宠物交h | 神马午夜av| 成人v精品蜜桃久一区 | 久久少妇av | 色呦| 亚洲精品网站在线播放gif | 翔田千里一区二区 | 久久久久一区二区精码av少妇 | 九草网| 亚洲AV无码精品黑人黑人 | 成人激情视频网站 | 欧美婷婷六月丁香综合色 | 人妻在线一区二区三区 | 久久久久久久久久久久 | www色网站 | 日日日网站 | 男女免费网站 | 午夜xx | 三年大片在线观看 | 国产精品永久免费 | 在线看一级片 | 亚洲第六页 | 中文字幕伊人 | 成人免费午夜 | 国产做受高潮漫动 | 欧美日韩一区二区三区在线视频 | 一区视频在线播放 | 国产福利一区二区三区视频 | 99久久婷婷国产综合精品草原 | www.色国产| 年下总裁被打光屁股sp | 美女被男生免费视频 | 亚洲a∨无码无在线观看 | 热久久中文 | 秋霞影院午夜老牛影院 | 狠狠干天天爱 | 欧美精品系列 | 久久h视频| 日韩免费网址 | 国产r级在线观看 | a级片免费在线观看 | 2025韩国大尺度电影 | 福利精品| 久久日精品 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产精品第72页 | 中文字幕乱码人妻一区二区三区 | 热99在线 | xxx性视频| 91一区二区三区在线 | 张柏芝54张无删码视频 | 亚洲乱码国产一区三区 | 国产免费一区二区三区网站免费 | √天堂| 超污网站在线观看 | 成人片黄网站色大片免费毛片 | 国产黄色片av | 国产成人a亚洲精品 | 日本视频在线免费观看 | 欧美又黑又粗 | 国产人妻精品午夜福利免费 | 激情文学av| 国产成人三级在线观看视频 | 精品一区二区三区中文字幕 | 看成人片| 五月激情婷婷丁香 | 中文字幕第9页 | 毛片成人| 欧美一区二区三 | 成人高清免费 | 亚洲精品在线观看av | 亚洲啪啪网 | 色综合天天干 | 欧美成人秋霞久久aa片 | 二区久久 | 日本a级无毛 | 日韩成人免费观看 | 大尺度床戏揉捏胸视频 | 成人福利片 | 希岛婚前侵犯中文字幕在线 | 黄色片a级 | 午夜免费高清视频 | av激情在线观看 | 国产不卡毛片 |