![【移動應(yīng)用開發(fā)技術(shù)】Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部_第1頁](http://file4.renrendoc.com/view/0cccf0948557823f9978fd9ce9941741/0cccf0948557823f9978fd9ce99417411.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部_第2頁](http://file4.renrendoc.com/view/0cccf0948557823f9978fd9ce9941741/0cccf0948557823f9978fd9ce99417412.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部_第3頁](http://file4.renrendoc.com/view/0cccf0948557823f9978fd9ce9941741/0cccf0948557823f9978fd9ce99417413.gif)
![【移動應(yīng)用開發(fā)技術(shù)】Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部_第4頁](http://file4.renrendoc.com/view/0cccf0948557823f9978fd9ce9941741/0cccf0948557823f9978fd9ce99417414.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部
這篇文章將為大家詳細(xì)講解有關(guān)Android怎么判斷當(dāng)前點擊位置是否在圓的內(nèi)部,在下覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。我們都知道,一個圓形的ImageView控件(本項目中使用的圓形控件是github上的),其實所占的區(qū)域還是正方形區(qū)域,只是顯示內(nèi)容為圓形,當(dāng)我們給ImageView設(shè)置觸摸事件時,沒有顯示區(qū)域也會相應(yīng)點擊事件,而我們可以通過計算當(dāng)前點擊的位置來判斷ImageView是否相應(yīng)觸摸事件。效果如圖所示:如上圖所示,當(dāng)點擊圓之內(nèi)拖動時,圓跟著移動,但是點擊圓之外拖動時,圓沒有任何反應(yīng)。要實現(xiàn)這個效果并不難,首先,先計算出圓的中心點坐標(biāo)(x1,y1),注意,x1,y1是相對于屏幕的坐標(biāo),不是相對于布局的坐標(biāo);然后獲取當(dāng)前按下的坐標(biāo)(x2,y2),只需要計算出當(dāng)前按下的點的坐標(biāo)(x2,y2)與圓心(x1,y1)的距離d的長度,然后與圓的半徑r相比較,如果d>r則當(dāng)前按下的點在圓之外,如果d<r,則當(dāng)前按下的點在圓之內(nèi),如下圖所示:這樣注意一下,以上都應(yīng)在MotionEvent.ACTION_DOWN里面計算,當(dāng)距離d大于半徑r時,returnfalse,則當(dāng)前控件不消費(fèi)事件,代碼如下:public
class
MainActivity
extends
Activity
{
int
lastX;
int
lastY;
boolean
isView
=
false;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final
CircleImageView
civ
=
(CircleImageView)
findViewById(R.id.civ_levitate);
civ.setOnTouchListener(new
View.OnTouchListener()
{
@Override
public
boolean
onTouch(View
v,
MotionEvent
event)
{
switch
(event.getAction()){
case
MotionEvent.ACTION_DOWN:
lastX
=
(int)
event.getRawX();
lastY
=
(int)
event.getRawY();
//獲取控件在屏幕的位置
int[]
location
=
new
int[2];
civ.getLocationOnScreen(location);
//控件相對于屏幕的x與y坐標(biāo)
int
x
=
location[0];
int
y
=
location[1];
//圓半徑
通過左右坐標(biāo)計算獲得getLeft
int
r
=
(civ.getRight()-civ.getLeft())/2;
//圓心坐標(biāo)
int
vCenterX
=
x+r;
int
vCenterY
=
y+r;
//點擊位置x坐標(biāo)與圓心的x坐標(biāo)的距離
int
distanceX
=
Math.abs(vCenterX-lastX);
//點擊位置y坐標(biāo)與圓心的y坐標(biāo)的距離
int
distanceY
=
Math.abs(vCenterY-lastY);
//點擊位置與圓心的直線距離
int
distanceZ
=
(int)
Math.sqrt(Math.pow(distanceX,2)+Math.pow(distanceY,2));
//如果點擊位置與圓心的距離大于圓的半徑,證明點擊位置沒有在圓內(nèi)
if(distanceZ
>
r){
return
false;
}
isView
=
true;
break;
case
MotionEvent.ACTION_MOVE:
if(isView){
int
moveX
=
(int)
event.getRawX();
int
moveY
=
(int)
event.getRawY();
int
disX
=
moveX
-
lastX;
int
disY
=
moveY
-
lastY;
int
left
=
civ.getLeft()+disX;
int
right
=
civ.getRight()+disX;
int
top
=
civ.getTop()+disY;
int
bottom
=
civ.getBottom()+disY;
civ.layout(left,top,right,bottom);
lastX
=
moveX;
lastY
=
moveY;
}
break;
case
MotionEvent.ACTION_UP:
isView
=
false;
break;
}
re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境的網(wǎng)絡(luò)安全培訓(xùn)
- 未來學(xué)習(xí)模式基于網(wǎng)絡(luò)教育平臺的思考
- 現(xiàn)代辦公空間中的綠色環(huán)保用品設(shè)計思考
- 2024年四年級品德與社會上冊 第三單元 生活在這里真好 第11課《我家來了新鄰居》說課稿 粵教版001
- 2024-2025學(xué)年高中物理 第十二章 機(jī)械波 4 波的衍射和干涉說課稿4 新人教版選修3-4001
- Module 1 Unit 1 She's a nice teacher(說課稿)-2023-2024學(xué)年外研版(三起)英語四年級下冊
- 2023九年級化學(xué)上冊 第一章 大家都來學(xué)化學(xué)1.2 化學(xué)實驗室之旅說課稿(新版)粵教版001
- 2025農(nóng)村養(yǎng)殖場場地租地合同
- 2025國際專利技術(shù)許可合同模板版
- Unit 5 Nature and Culture(說課稿)2023-2024學(xué)年人教新起點版英語六年級下冊
- 電動汽車用驅(qū)動電機(jī)系統(tǒng)-編制說明
- 江蘇卷2024年高三3月份模擬考試化學(xué)試題含解析
- (正式版)JTT 1497-2024 公路橋梁塔柱施工平臺及通道安全技術(shù)要求
- 2024年四川省成都市新都區(qū)中考英語一診試卷(含解析)
- 醫(yī)療器械物價收費(fèi)申請流程
- 招聘專員轉(zhuǎn)正述職報告
- “一帶一路”背景下的西安市文化旅游外宣翻譯研究-基于生態(tài)翻譯學(xué)理論
- 2024年江蘇省昆山市六校中考聯(lián)考(一模)化學(xué)試題
- 大學(xué)生文學(xué)常識知識競賽考試題庫500題(含答案)
- 國家電網(wǎng)智能化規(guī)劃總報告
- 邢臺市橋西區(qū)2024年事業(yè)單位考試《公共基礎(chǔ)知識》全真模擬試題含解析
評論
0/150
提交評論