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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

android 酷狗demo_Android仿酷狗旋转界面功能-自定义控件实现

發(fā)布時(shí)間:2025/3/21 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 酷狗demo_Android仿酷狗旋转界面功能-自定义控件实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引言

該旋轉(zhuǎn)界面主要是仿照IOS酷狗版的旋轉(zhuǎn)界面來實(shí)現(xiàn),本項(xiàng)目通過結(jié)合ValueAnimator、Rotation、PivotX和PivotY來實(shí)現(xiàn),目前主要實(shí)現(xiàn)了左旋轉(zhuǎn)和右旋轉(zhuǎn),該功能主要是在我的樂樂音樂播放器里面使用,其項(xiàng)目地址如下:https://github.com/zhangliangming/HappyPlayer5.git?。

需求在界面上左右滑,View的角度根據(jù)手勢移動(dòng)。

只攔截左右滑動(dòng),上下方向的滑動(dòng)無影響。

子View的左右滑動(dòng)事件無影響。

預(yù)覽圖

實(shí)現(xiàn)思路RotateLayout:左右旋轉(zhuǎn)View

onInterceptTouchEvent:該方法只要做左右移動(dòng)攔截,上下移動(dòng)不攔截。

ValueAnimator:該動(dòng)畫只要改變RotateLayout View的角度位置,在ACTION_UP和界面打開時(shí)調(diào)用。

ACTION_MOVE時(shí),根據(jù)移動(dòng)的X位移,修改RotateLayout的角度。

角度算法:先確定旋轉(zhuǎn)view的旋轉(zhuǎn)中心為Q(width/2,height*1.5),然后根據(jù)第一次觸摸時(shí),該觸摸點(diǎn)在屏幕上面的AXY(ax,ay)坐標(biāo),根據(jù)A點(diǎn)和Q點(diǎn),計(jì)算出該次的夾角A。滑動(dòng)時(shí),同理計(jì)算滑動(dòng)時(shí)的BXY(bx,by)坐標(biāo),計(jì)算出B點(diǎn)和Q點(diǎn)的夾角B,通過B - A,可以得出view的旋轉(zhuǎn)度數(shù)。計(jì)算夾角時(shí),可以使用tan來計(jì)算,如果計(jì)算出來的夾角為負(fù)數(shù)時(shí),需要+180來得到真正的夾角。

注意,需要activity開啟硬件加速,動(dòng)畫才流暢。

主要代碼分析

onFinishInflate

該方法只要實(shí)現(xiàn)兩種方式,一種是通過布局xml文件來初始化RotateLayout;另外一種是新new RotateLayout。

onLayout

該方法只要是在初始化成功之后,修改RotateLayout的角度。

onInterceptTouchEvent

該方法只要是攔截左右移動(dòng)和判斷是否在左右不攔截的子View集合里面。

onTouchEvent

該方法只要在用戶左右移動(dòng)的時(shí)候,修改RotateLayout的角度。

該方法只要是ACTION_UP的時(shí)候,需要判斷當(dāng)前RotateLayout當(dāng)前的角度,如果小于關(guān)閉窗口的標(biāo)志值,則角度還原0.否則關(guān)閉view.

總結(jié)

以上是生活随笔為你收集整理的android 酷狗demo_Android仿酷狗旋转界面功能-自定义控件实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。