안 드 로 이 드 사용자 정의 videoview 모방 틱 톡 인터페이스

본 논문 의 사례 는 안 드 로 이 드 사용자 정의 videoview 모 의 틱 톡 인터페이스 의 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1.효과 도
틱 톡 의 인터페이스 효과 와 똑 같 고 사용자 정의 가 가능 합 니 다.어떤 페이지 가 필요 한 지 스스로 정의 하 세 요.
2.사용자 정의 비디오 보기

package com.example.myapplication20;
 
 
import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;
 
 
/**
 *   :created by Jarchie
 *   :2020/12/7 15:05:57
 *   :[email protected]
 *   :     VideoView
 */
public class CusVideoView extends VideoView {
    public CusVideoView(Context context) {
        super(context);
    }
 
    public CusVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public CusVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
 
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int width = getDefaultSize(getWidth(), widthMeasureSpec);
        int height = getDefaultSize(getHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
    }
}
3.xml 인터페이스

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mRootView"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <ImageView
        android:id="@+id/mThumb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false"
        android:focusable="false"
        android:scaleType="centerCrop"
        android:visibility="visible" />
 
    <ImageView
        android:id="@+id/mPlay"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:alpha="0"
        android:clickable="true"
        android:focusable="true"
        android:src="@drawable/play_arrow" />
 
 
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="60dp"
        android:orientation="vertical">
 
        <TextView
            android:id="@+id/mTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:lineSpacingExtra="5dp"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            tools:text="          
" /> </LinearLayout> <com.example.myapplication20.CusVideoView android:id="@+id/mVideoView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="false" android:focusable="false" /> </RelativeLayout>
4.drawable

<vector android:alpha="0.61" android:height="24dp"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#99ffffff" android:pathData="M8,5v14l11,-7z"/>
</vector>
5.메 인 인터페이스 에 주 소 를 설정 합 니 다.이 demo 는 로 컬 비디오 파일 을 사용 합 니 다.파일 은 다시../res/raw 폴 더 에 저장 되 어 있 습 니 다.직접 가 져 오 십시오.

package com.example.myapplication20;
 
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
 
 
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
 
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
 
/**
 *   :JArchie
 *       :https://github.com/JArchie/TiktokDemo
 */
 
public class MainActivity extends AppCompatActivity {
    CusVideoView mVideoView;
    private int[] videos = {R.raw.v1, R.raw.v2, R.raw.qi};
    TextView mTitle;
 
 
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mVideoView = findViewById(R.id.mVideoView);
        mTitle = findViewById(R.id.mTitle);
 
        String url = "android.resource://" + getPackageName() + "/" + videos[1];
        Log.e("TAG", "video_onCreate: " + url);
 
        mVideoView.setVideoURI(Uri.parse(url));
        mTitle.setText("@  
"); } @Override protected void onStart() { super.onStart(); playVideo(); } @Override protected void onDestroy() { super.onDestroy(); releaseVideo(); } // private void playVideo() { Log.e("TAG", "play_video"); // View itemView = mRecycler.getChildAt(0); final CusVideoView mVideoView = findViewById(R.id.mVideoView); final ImageView mPlay = findViewById(R.id.mPlay); final ImageView mThumb = findViewById(R.id.mThumb); final MediaPlayer[] mMediaPlayer = new MediaPlayer[1]; mVideoView.start(); mVideoView.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { mMediaPlayer[0] = mp; mp.setLooping(true); mThumb.animate().alpha(0).setDuration(200).start(); return false; } }); // mPlay.setOnClickListener(new View.OnClickListener() { boolean isPlaying = true; @Override public void onClick(View v) { if (mVideoView.isPlaying()) { mPlay.animate().alpha(1f).start(); mVideoView.pause(); isPlaying = false; } else { mPlay.animate().alpha(0f).start(); mVideoView.start(); isPlaying = true; } } }); } // private void releaseVideo() { Log.e("TAG", "releaseVideo_video"); // View itemView = mRecycler.getChildAt(index); final CusVideoView mVideoView = findViewById(R.id.mVideoView); final ImageView mThumb = findViewById(R.id.mThumb); final ImageView mPlay = findViewById(R.id.mPlay); mVideoView.stopPlayback(); mThumb.animate().alpha(1).start(); mPlay.animate().alpha(0f).start(); } }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기