直播小程序源码,自定义支持360度旋转的View
直播小程序源码,自定义支持360度旋转的View
自定义Touch360ImageView的代码如下:
1 | <br>package com.example.myapplication;<br>import android.content.Context;<br>import android.content.res.TypedArray;<br>import android.graphics.drawable.LevelListDrawable;<br>import android.util.AttributeSet;<br>import android.view.MotionEvent;<br> public class Touch360ImageView extends androidx.appcompat.widget.AppCompatImageView {<br> private float mDownX;<br> private float mLastX;<br> private long mTouchTime;<br> private int mImageLevel;<br> private int mDrawableCount;<br> private static final int TOUCH_SPACING = 5; //触摸间距<br> private static final int TIME_INTERVAL = 200; //触摸时间间隔<br> public Touch360ImageView(Context context) {<br> this(context, null);<br> }<br> public Touch360ImageView(Context context, AttributeSet attrs) {<br> this(context, attrs, 0);<br> }<br> public Touch360ImageView(Context context, AttributeSet attrs, int defStyleAttr) {<br> super(context, attrs, defStyleAttr);<br> TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.Touch360ImageView);<br> int arrayId = typedArray.getResourceId(R.styleable.Touch360ImageView_drawableArray, R.array.image_list);<br> typedArray.recycle();<br> TypedArray drawableArray = context.getResources().obtainTypedArray(arrayId);<br> LevelListDrawable levelListDrawable = new LevelListDrawable();<br> mDrawableCount = drawableArray.length();<br> for (int i = 0; i < mDrawableCount; i++) {<br> levelListDrawable.addLevel(0, i, getResources().getDrawable(drawableArray.getResourceId(i, 0)));<br> }<br> setImageDrawable(levelListDrawable);<br> drawableArray.recycle();<br> }<br> @Override<br> public boolean onTouchEvent(MotionEvent event) {<br> switch (event.getAction()) {<br> case MotionEvent.ACTION_DOWN:<br> mDownX = event.getRawX();<br> mLastX = mDownX;<br> mTouchTime = System.currentTimeMillis();<br> break;<br> case MotionEvent.ACTION_MOVE:<br> int dx = (int) (event.getRawX() - mLastX);<br> mLastX = event.getRawX();<br> if (dx > TOUCH_SPACING) {<br> mImageLevel++;<br> if (mImageLevel >= mDrawableCount) {<br> mImageLevel = 0;<br> }<br> } else if (dx < -TOUCH_SPACING) {<br> mImageLevel--;<br> if (mImageLevel < 0) {<br> mImageLevel = mDrawableCount - 1;<br> }<br> }<br> setImageLevel(mImageLevel);<br> break;<br> case MotionEvent.ACTION_UP:<br> if (System.currentTimeMillis() - mTouchTime < TIME_INTERVAL && Math.abs(mDownX - event.getRawX()) < TOUCH_SPACING) {<br> performClick();<br> return false;<br> }<br> break;<br> }<br> return true;<br> }<br>} |
可根据效果调整触摸间距和时间间隔以达到更好的效果。支持根据自定义图片数量来刷新图片。
布局文件中的代码
1 | <br> <com.example.myapplication.Touch360ImageView<br> android:layout_width= "wrap_content" <br> android:layout_height= "wrap_content" <br> android:layout_centerInParent= "true" <br> app:drawableArray= "@array/image_list" /> |
以上就是 直播小程序源码,自定义支持360度旋转的View,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-06-08 php短视频源码,按钮的圆角图标实现
2022-06-08 直播app源码,定时开关,实现计时器功能
2022-06-08 直播平台源码,针对消息对话框的实际应用效果