直播小程序源码,自定义支持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,更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-06-08 php短视频源码,按钮的圆角图标实现
2022-06-08 直播app源码,定时开关,实现计时器功能
2022-06-08 直播平台源码,针对消息对话框的实际应用效果
点击右上角即可分享
微信分享提示