广告
返回顶部
首页 > 资讯 > 精选 >Android如何实现微信朋友圈图片和视频播放
  • 640
分享到

Android如何实现微信朋友圈图片和视频播放

2023-06-14 23:06:11 640人浏览 泡泡鱼
摘要

这篇文章主要介绍了Android如何实现微信朋友圈图片和视频播放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android是什么Android是一种基于linux内核的自由

这篇文章主要介绍了Android如何实现微信朋友圈图片和视频播放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Android是什么

Android是一种基于linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发

具体内容如下

效果图:

Android如何实现微信朋友圈图片和视频播放

源码地址:链接

参数控制,是否显示播放按钮

holder.layout.setIsshowAll(mList.get(position).isShowAll);   holder.layout.setIsVideo(true); //true :video, false :img   holder.layout.setUrlList(mList.get(position).urlList);

自定义控件:

package com.example.mepositry.view; import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.drawable.Drawable;import android.support.v7.widget.AppCompatImageView;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.ViewGroup; import com.example.mepositry.R;   //根据宽高比例自动计算高度ImageView public class RatioImageView extends AppCompatImageView {     private int playBtnRes = R.mipmap.play_btn_video;    private Bitmap playBtnBitmap;     private boolean type; //true表示video    private int i; //i图片id    private String url; //url图片地址      private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);    Rect src = new Rect();    RectF dest = new RectF();    /    }     public RatioImageView(Context context) {        super(context);        TypedArray typedArray = context.obtainStyledAttributes(R.styleable.RatioImageView);        playBtnRes = typedArray.getResourceId(R.styleable.ImageViewPlay_ivp_play_btn_res, playBtnRes);        playBtnBitmap = BitmapFactory.decodeResource(getResources(), playBtnRes);        mRatio = typedArray.getFloat(R.styleable.RatioImageView_ratio, 0f);        typedArray.recycle();    }       //*description: 设置图片类型,如果是TYPE_IMAGE,显示图片,如果是TYPE_VIDEO,显示图片,并且在图片正中心绘制一个播放按钮    public void setType(boolean type,  int i,   String url){        this.type = type;        this.i = i;        this.url = url;    }      //设置ImageView的宽高比     public void setRatio(float ratio) {        mRatio = ratio;    }     @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        if(type){            //如果是true,显示图片,并且在图片正中心绘制一个播放按钮            Drawable drawable = getDrawable();            if (drawable != null) {                int viewW = drawable.getIntrinsicWidth(); //获取图片的宽                int viewH = drawable.getIntrinsicHeight(); //获取图片的高                int btnW = playBtnBitmap.getWidth(); //获取播放按钮的宽                int btnH = playBtnBitmap.getHeight(); //获取播放按钮的高                float[] result = measureViewSize(viewW, viewH);                if(result[0] > 0 && result[1] > 0){ //先根据比例缩放图标,确保绘制的时候再次回归缩放,保持播放的图片大小不变                    btnW *= (viewW / result[0]);                    btnH *= (viewH / result[1]);                }                float left = (viewW - btnW) / 2.0f;                float top = (viewH - btnH) / 2.0f;                src.set(0, 0, btnW, btnH);                dest.set(left, top, left+btnW, top+btnH);                canvas.save();                canvas.concat(getImageMatrix());                canvas.drawBitmap(playBtnBitmap, src, dest, mPaint);                canvas.restore();            }        }    }       @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        int width = MeasureSpec.getSize(widthMeasureSpec);        Drawable drawable = getDrawable();        if (drawable != null) { //重新计算view            int viewW = drawable.getIntrinsicWidth();            int viewH = drawable.getIntrinsicHeight();            if(viewW > 0 && viewH > 0) {                float[] result = measureViewSize(viewW, viewH);                setMeasuredDimension((int)result[0], (int) result[1]);            }        }         if (mRatio != 0) {            float height = width / mRatio;            heightMeasureSpec = MeasureSpec.makeMeasureSpec((int) height, MeasureSpec.EXACTLY);        }        super.onMeasure(widthMeasureSpec, heightMeasureSpec);    }     @Override    public boolean onTouchEvent(MotionEvent event) {         switch (event.getAction()) {            case MotionEvent.ACTION_DOWN:                Drawable drawable = getDrawable();                if (drawable != null) {                    drawable.mutate().setColorFilter(Color.GRAY,                            PorterDuff.Mode.MULTIPLY);                }                break;            case MotionEvent.ACTION_MOVE:                break;            case MotionEvent.ACTION_CANCEL:            case MotionEvent.ACTION_UP:                Drawable drawableUp = getDrawable();                if (drawableUp != null) {                    drawableUp.mutate().clearColorFilter();                }                break;        }         return super.onTouchEvent(event);    }      // *description: 根据传入的图片宽高,计算出最终的imageview的宽高,长宽等比缩放    private float[] measureViewSize(int w, int h) {        ViewGroup.LayoutParams lp = getLayoutParams();        float maxW = lp.width;        float maxH = lp.height;        float showWidth = w;        float showHeight = h;        float scale = (1.0f * maxW) / maxH;        float s = 1.0f * w / h;        if (w < maxW && h < maxH) { //不进行缩放            showWidth = w;            showHeight = h;        } else if (s > scale) { //宽取最大,高进行缩小            showWidth = maxW;            showHeight = (int) (h * (showWidth * 1.0 / w));        } else if (s <= scale) {//高取最大,宽进行缩小            showHeight = maxH;            showWidth = (int) (w * (showHeight * 1.0 / h));        }        float[] result = new float[2];        result[0] = showWidth;        result[1] = showHeight;        return result;    } }

感谢你能够认真阅读完这篇文章,希望小编分享的“Android如何实现微信朋友圈图片和视频播放”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Android如何实现微信朋友圈图片和视频播放

本文链接: https://www.lsjlt.com/news/276064.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现微信朋友圈图片和视频播放
    本文实例为大家分享了Android实现微信朋友圈图片和视频播放的具体代码,供大家参考,具体内容如下 1.效果图: 2.源码地址:链接 3.参数控制,是否显示播放按钮 holde...
    99+
    2022-11-12
  • Android如何实现微信朋友圈图片和视频播放
    这篇文章主要介绍了Android如何实现微信朋友圈图片和视频播放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android是什么Android是一种基于Linux内核的自由...
    99+
    2023-06-14
  • Android实现微信朋友圈发本地视频功能
    一、前言 前一篇文章已经详细介绍了如何使用Xposed框架编写第一个微信插件:摇骰子和猜拳作弊器 本文继续来介绍如何使用Xposed框架编写第二个微信插件,可以将本地小视频发布...
    99+
    2022-06-06
    朋友圈 Android
  • Android如何实现仿微信朋友圈全文、收起功能
    小编给大家分享一下Android如何实现仿微信朋友圈全文、收起功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图具体代码(详细解释在代码注释中都有,这里就省...
    99+
    2023-05-30
    android
  • 微信小程序如何实现通过保存图片分享到朋友圈功能
    这篇文章给大家分享的是有关微信小程序如何实现通过保存图片分享到朋友圈功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明首先说明一点,小程序内是不能直接分享到朋友圈的。所以只能...
    99+
    2022-10-19
  • 如何实现HTML5页面音视频在微信和app下自动播放
    这篇文章将为大家详细讲解有关如何实现HTML5页面音视频在微信和app下自动播放,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。纯H5页面在手机端中是无法实现自动播放,移动...
    99+
    2022-10-19
  • 微信小程序如何实现自动播放视频模仿gif动图效果
    这篇文章主要介绍了微信小程序如何实现自动播放视频模仿gif动图效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求背景:在小程序页面插入gif动态图,但gif图一般体积比较...
    99+
    2023-06-20
  • 微信小程序如何实现选择图片和放大预览图片功能
    这篇文章给大家分享的是有关微信小程序如何实现选择图片和放大预览图片功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。视频中,老师也是看着官方文档,为学生们讲解,微信提供了系统的方...
    99+
    2022-10-19
  • Android如何实现仿微信语音消息的录制和播放功能
    小编给大家分享一下Android如何实现仿微信语音消息的录制和播放功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、简述效果:实现功能:长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作