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

歡迎訪問 生活随笔!

生活随笔

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

Android

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

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

引言

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

需求在界面上左右滑,View的角度根據手勢移動。

只攔截左右滑動,上下方向的滑動無影響。

子View的左右滑動事件無影響。

預覽圖

實現思路RotateLayout:左右旋轉View

onInterceptTouchEvent:該方法只要做左右移動攔截,上下移動不攔截。

ValueAnimator:該動畫只要改變RotateLayout View的角度位置,在ACTION_UP和界面打開時調用。

ACTION_MOVE時,根據移動的X位移,修改RotateLayout的角度。

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

注意,需要activity開啟硬件加速,動畫才流暢。

主要代碼分析

onFinishInflate

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

onLayout

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

onInterceptTouchEvent

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

onTouchEvent

該方法只要在用戶左右移動的時候,修改RotateLayout的角度。

該方法只要是ACTION_UP的時候,需要判斷當前RotateLayout當前的角度,如果小于關閉窗口的標志值,則角度還原0.否則關閉view.

總結

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

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