Browse Source

地图闯关入口,单词切割(手势存在问题)

LAPTOP-K69FCNBP\crius 2 years ago
parent
commit
aebaa14ac4

+ 10 - 2
.idea/misc.xml

@@ -8,8 +8,6 @@
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_count_down.xml" value="0.25" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_drag_select.xml" value="0.12708333333333333" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_enty_anim.xml" value="0.11979166666666667" />
-        <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_gsxy_video.xml" value="0.1" />
-        <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_ijkplay.xml" value="0.1390625" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_lottie.xml" value="0.1" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_main.xml" value="0.1375" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_progress.xml" value="0.22" />
@@ -25,6 +23,16 @@
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_view.xml" value="0.25" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/activity_web.xml" value="0.1816123188405797" />
         <entry key="..\:/Progect/gitee/EffectDemo/app/src/main/res/layout/demo_activity.xml" value="0.18020833333333333" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/drawable/left_round_bg.xml" value="0.1355" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/drawable/right_round_bg.xml" value="0.139" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/activity_main.xml" value="0.20852641334569044" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/activity_map_challenge.xml" value="0.21241050119331742" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/activity_quxian.xml" value="0.8631178707224335" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/activity_test2.xml" value="0.2600652883569097" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/activity_word_cut.xml" value="0.42962962962962964" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/demo_activity.xml" value="0.35025641025641024" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/item_word_cut.xml" value="0.2577777777777778" />
+        <entry key="..\:/work/mozhi/qiqu/EffectDemo/app/src/main/res/layout/view_linear.xml" value="0.17407407407407408" />
       </map>
     </option>
   </component>

+ 1 - 1
app/build.gradle

@@ -21,7 +21,7 @@ android {
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         ndk {
-            abiFilters "armeabi"
+            abiFilters "armeabi", 'arm64-v8a'
         }
         manifestPlaceholders = [
                 JPUSH_PKGNAME : applicationId,

+ 43 - 35
app/src/main/AndroidManifest.xml

@@ -4,9 +4,9 @@
     package="com.xunao.effectdemo">
 
     <uses-sdk tools:overrideLibrary="com.qmuiteam.qmui" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
 
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@@ -14,24 +14,15 @@
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
-
-    <!-- 网络权限 -->
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- 网络权限 -->
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
-
-    <!-- mirror -->
+    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <!-- mirror -->
     <uses-permission android:name="android.permission.WAKE_LOCK" />
-    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
-
-    <!-- 推送本地媒体权限 -->
-    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
-
-    <!-- 获取设备名称、蓝牙搜索(蓝牙搜索同时需要蓝牙权限和定位权限) -->
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 推送本地媒体权限 -->
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 获取设备名称、蓝牙搜索(蓝牙搜索同时需要蓝牙权限和定位权限) -->
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
 
-
     <application
         android:name=".App"
         android:allowBackup="true"
@@ -39,18 +30,17 @@
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:usesCleartextTraffic="true"
-        android:theme="@style/AppTheme">
-
+        android:theme="@style/AppTheme"
+        android:usesCleartextTraffic="true">
         <activity android:name=".activity.MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
-<!--                <action android:name="android.intent.action.VIEW" />-->
-<!--                <category android:name="android.intent.category.DEFAULT" />-->
-<!--                <category android:name="android.intent.category.BROWSABLE" />-->
-<!--                <data android:scheme="um.6304343088ccdf4b7e0d67bb" />-->
+                <!-- <action android:name="android.intent.action.VIEW" /> -->
+                <!-- <category android:name="android.intent.category.DEFAULT" /> -->
+                <!-- <category android:name="android.intent.category.BROWSABLE" /> -->
+                <!-- <data android:scheme="um.6304343088ccdf4b7e0d67bb" /> -->
             </intent-filter>
         </activity>
         <activity
@@ -76,13 +66,15 @@
         <activity
             android:name=".activity.CountDownActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.LottieActivity"/>
-        <activity android:name=".activity.CongratulationsActivity"/>
-        <activity android:name=".activity.SoundActivity"/>
-        <activity android:name=".activity.StarsActivity"
-            android:screenOrientation="landscape"/>
+        <activity android:name=".activity.LottieActivity" />
+        <activity android:name=".activity.CongratulationsActivity" />
+        <activity android:name=".activity.SoundActivity" />
+        <activity
+            android:name=".activity.StarsActivity"
+            android:screenOrientation="landscape" />
 
-        <service android:name=".receiver.MyService"
+        <service
+            android:name=".receiver.MyService"
             android:enabled="true"
             android:exported="false"
             android:process=":pushcore">
@@ -90,15 +82,18 @@
                 <action android:name="cn.jiguang.user.service.action" />
             </intent-filter>
         </service>
+
         <receiver
             android:name=".receiver.PushMessageReceiver"
             android:enabled="true"
             android:exported="false">
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
-                <category android:name="com.xunao.effectdemo"/>
+
+                <category android:name="com.xunao.effectdemo" />
             </intent-filter>
         </receiver>
+
         <provider
             android:name="cn.jiguang.union.ads.service.JAdFileProvider"
             android:authorities="${applicationId}.JAdFileProvider"
@@ -107,25 +102,38 @@
             <meta-data
                 android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/jpush_file_paths" />
+
             <intent-filter>
                 <action android:name="cn.jpush.android.intent.FileProvider" />
+
                 <category android:name="${applicationId}" />
             </intent-filter>
         </provider>
 
-        <activity android:name=".activity.UMengLoginActivity"/>
+        <activity android:name=".activity.UMengLoginActivity" />
         <activity
             android:name=".activity.WebActivity"
             android:screenOrientation="landscape" />
         <activity
             android:name=".activity.SequentialDragActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".yzs.YZSConfigActivity"/>
-        <activity android:name=".yzs.YZSDemoActivity"/>
-        <activity android:name=".activity.SongLyricActivity"/>
-        <activity android:name=".activity.IJKPlayerActivity"
+        <activity android:name=".yzs.YZSConfigActivity" />
+        <activity android:name=".yzs.YZSDemoActivity" />
+        <activity android:name=".activity.SongLyricActivity" />
+        <activity
+            android:name=".activity.IJKPlayerActivity"
+            android:screenOrientation="landscape" />
+        <activity
+            android:name=".activity.GSXYVideoPlayerActivity"
             android:screenOrientation="landscape" />
-        <activity android:name=".activity.GSXYVideoPlayerActivity"
+        <activity
+            android:name=".activity.WordCutActivity"
+            android:screenOrientation="landscape" />
+        <activity
+            android:name=".activity.MapChallengeActivity"
+            android:screenOrientation="landscape" />
+        <activity
+            android:name=".activity.VideoDemandActivity"
             android:screenOrientation="landscape" />
     </application>
 

+ 11 - 1
app/src/main/java/com/xunao/effectdemo/activity/MainActivity.java

@@ -25,7 +25,7 @@ public class MainActivity extends Activity {
 
 	Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,
 			btn9,btn10,btn11,btn12,btn13, btn14,btn15,btn16,
-			btn17,btn18,btn19;
+			btn17,btn18,btn19,btn20,btn21;
 	Intent intent;
 
 	@Override
@@ -141,5 +141,15 @@ public class MainActivity extends Activity {
 			intent = new Intent(MainActivity.this, GSXYVideoPlayerActivity.class);
 			startActivity(intent);
 		});
+		btn20 = findViewById(R.id.btn_20);
+		btn20.setOnClickListener(v->{
+			intent = new Intent(MainActivity.this, WordCutActivity.class);
+			startActivity(intent);
+		});
+		btn21 = findViewById(R.id.btn_21);
+		btn21.setOnClickListener(v->{
+			intent = new Intent(MainActivity.this, MapChallengeActivity.class);
+			startActivity(intent);
+		});
 	}
 }

+ 44 - 0
app/src/main/java/com/xunao/effectdemo/activity/MapChallengeActivity.java

@@ -0,0 +1,44 @@
+package com.xunao.effectdemo.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+import com.xunao.effectdemo.R;
+
+/**
+ * 地图闯关
+ */
+public class MapChallengeActivity extends Activity {
+    Button btnMap1, btnMap2, btnMap3, btnMap4, btnMap5, btnMap6;
+
+    Intent intent;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_map_challenge);
+        initView();
+    }
+
+    void initView(){
+        btnMap1 = findViewById(R.id.btn_map_1);
+        btnMap2 = findViewById(R.id.btn_map_2);
+        btnMap3 = findViewById(R.id.btn_map_3);
+        btnMap3.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                intent = new Intent(MapChallengeActivity.this, VideoDemandActivity.class);
+                startActivity(intent);
+            }
+        });
+        btnMap4 = findViewById(R.id.btn_map_4);
+        btnMap5 = findViewById(R.id.btn_map_5);
+        btnMap6 = findViewById(R.id.btn_map_6);
+    }
+
+}

+ 20 - 0
app/src/main/java/com/xunao/effectdemo/activity/VideoDemandActivity.java

@@ -0,0 +1,20 @@
+package com.xunao.effectdemo.activity;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+import com.xunao.effectdemo.R;
+
+/**
+ * 视频点播
+ */
+public class VideoDemandActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_video_demand);
+    }
+}

+ 86 - 0
app/src/main/java/com/xunao/effectdemo/activity/WordCutActivity.java

@@ -0,0 +1,86 @@
+package com.xunao.effectdemo.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.xunao.effectdemo.R;
+import com.xunao.effectdemo.adapter.WordCutAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WordCutActivity extends Activity {
+    private final String TAG = "WordCutActivity";
+
+    private List<String> wordList = new ArrayList<>();
+    private LinearLayout llWordCut;
+    private RecyclerView rvWordCut;
+    private WordCutAdapter wordCutAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_word_cut);
+        llWordCut = findViewById(R.id.ll_word_cut);
+        llWordCut.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()){
+                    case MotionEvent.ACTION_MOVE:
+                        Log.i(TAG, "X:" + event.getX() + ",Y:" + event.getY());
+                        break;
+                }
+                return true;
+            }
+        });
+        rvWordCut = findViewById(R.id.rv_word_cut);
+
+        wordList.add("b");
+        wordList.add("u");
+        wordList.add("r");
+        wordList.add("g");
+        wordList.add("b");
+        wordList.add("u");
+        wordList.add("r");
+        wordList.add("g");
+        wordList.add("e");
+        wordList.add("r");
+        wordList.add("e");
+        wordList.add("r");
+        wordList.add("b");
+
+        // 设置横向布局
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false){
+            @Override
+            public boolean canScrollHorizontally() {
+                return false;
+            }
+        };
+        rvWordCut.setLayoutManager(linearLayoutManager);
+        wordCutAdapter = new WordCutAdapter(wordList, this);
+        rvWordCut.setAdapter(wordCutAdapter);
+
+        if(wordCutAdapter.getItemCount() > 0) {
+            RecyclerView.ViewHolder holder = rvWordCut.findViewHolderForAdapterPosition(0);
+            if (holder != null && holder instanceof WordCutAdapter.ViewHolder) {
+                WordCutAdapter.ViewHolder viewHolder = (WordCutAdapter.ViewHolder) holder;
+                int[] location = new int[2];
+                viewHolder.llSlideArea.getLocationOnScreen(location);
+                Log.i(TAG, "---x:" + location[0] + ",y:" + location[1]);
+                //使用坐标
+            }else{
+                Log.i(TAG, "yichang");
+            }
+        }else{
+            Log.i(TAG, "未完成");
+        }
+    }
+}

+ 119 - 0
app/src/main/java/com/xunao/effectdemo/adapter/WordCutAdapter.java

@@ -0,0 +1,119 @@
+package com.xunao.effectdemo.adapter;
+
+import android.content.Context;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import com.xunao.effectdemo.R;
+
+import java.util.List;
+
+public class WordCutAdapter extends RecyclerView.Adapter<WordCutAdapter.ViewHolder> {
+    public static final int TYPE_HEADER = 0;
+    public static final int TYPE_FOOT = 1;
+    public static final int TYPE_BODY = 2;
+    private List<String> wordList;
+    private final Context context;
+
+    public WordCutAdapter(List<String> mList, Context context) {
+        this.wordList = mList;
+        this.context = context;
+    }
+
+    @NonNull
+    @Override
+    public WordCutAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+        View view = LayoutInflater.from(viewGroup.getContext())
+                .inflate(R.layout.item_word_cut,viewGroup,false);
+        ViewHolder holder = new ViewHolder(view);
+        if(i == TYPE_HEADER){
+            holder.llLeftArea.setVisibility(View.VISIBLE);
+            holder.llSlideArea.setVisibility(View.VISIBLE);
+        }else if(i == TYPE_FOOT){
+            holder.llRightArea.setVisibility(View.VISIBLE);
+        }else{
+            holder.llSlideArea.setVisibility(View.VISIBLE);
+        }
+        return holder;
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull WordCutAdapter.ViewHolder viewHolder, int i) {
+        String data = wordList.get(i);
+        viewHolder.tvWord.setText(data);
+
+        int[] location = new int[2];
+        viewHolder.llSlideArea.getLocationInWindow(location);
+        Log.i("word", i + "---x:" + location[0] + ",y:" + location[1]);
+
+        viewHolder.llItem.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                switch (event.getAction()){
+                    case MotionEvent.ACTION_MOVE:
+                        Log.i("word", "X:" + event.getRawX() + ",Y:" + event.getRawY());
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        viewHolder.llDivider.setVisibility(View.VISIBLE);
+                        break;
+                }
+                return true;
+            }
+        });
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if(position == 0){
+            return TYPE_HEADER;
+        }else if(position == wordList.size() -1){
+            return TYPE_FOOT;
+        }else{
+            return TYPE_BODY;
+        }
+    }
+
+    @Override
+    public int getItemCount() {
+        return wordList.isEmpty() ? 0 : wordList.size();
+    }
+
+    public static class ViewHolder extends RecyclerView.ViewHolder {
+
+        TextView tvWord;
+        public LinearLayout llSlideArea;
+        LinearLayout llLeftArea;
+        LinearLayout llRightArea;
+        LinearLayout llDivider;
+        LinearLayout llItem;
+
+        public ViewHolder(@NonNull View itemView) {
+            super(itemView);
+            tvWord = itemView.findViewById(R.id.tv_word);
+            llSlideArea = itemView.findViewById(R.id.ll_slide_area);
+            llLeftArea = itemView.findViewById(R.id.ll_left_area);
+            llRightArea = itemView.findViewById(R.id.ll_right_area);
+            llDivider = itemView.findViewById(R.id.ll_divider);
+            llItem = itemView.findViewById(R.id.ll_item);
+        }
+    }
+
+    //1.定义变量接收接口
+    private OnItemClickListener mOnItemClickListener;
+    //2.定义接口:点击事件
+    public interface OnItemClickListener {
+        void onItemClick(View view, int position);//单击
+    }
+    //3.设置接口接收的方法
+    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
+        mOnItemClickListener = onItemClickListener;
+    }
+
+}

+ 6 - 0
app/src/main/res/drawable/left_round_bg.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/colorWhite" />
+    <corners android:bottomLeftRadius="8dp"
+        android:topLeftRadius="8dp"/>
+</shape>

+ 6 - 0
app/src/main/res/drawable/right_round_bg.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/colorWhite" />
+    <corners android:bottomRightRadius="8dp"
+        android:topRightRadius="8dp"/>
+</shape>

+ 12 - 0
app/src/main/res/layout/activity_main.xml

@@ -119,6 +119,18 @@
             android:text="视频播放"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>
+
+        <Button
+            android:id="@+id/btn_20"
+            android:text="单词切割"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+
+        <Button
+            android:id="@+id/btn_21"
+            android:text="地图闯关"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
     </LinearLayout>
 
 </ScrollView>

+ 43 - 0
app/src/main/res/layout/activity_map_challenge.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    tools:context=".activity.MapChallengeActivity"
+    android:orientation="horizontal">
+
+    <Button
+        android:id="@+id/btn_map_1"
+        android:text="视频播放"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+    <Button
+        android:id="@+id/btn_map_2"
+        android:text="点图发声"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+    <Button
+        android:id="@+id/btn_map_3"
+        android:text="视频点播"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+    <Button
+        android:id="@+id/btn_map_4"
+        android:text="选择题"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+    <Button
+        android:id="@+id/btn_map_5"
+        android:text="文字泛红"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+    <Button
+        android:id="@+id/btn_map_6"
+        android:text="角色扮演"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+
+</LinearLayout>

+ 9 - 0
app/src/main/res/layout/activity_video_demand.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".activity.VideoDemandActivity">
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 16 - 0
app/src/main/res/layout/activity_word_cut.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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/ll_word_cut"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/textGrayColor"
+    android:gravity="center"
+    android:orientation="vertical"
+    tools:context=".activity.WordCutActivity">
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_word_cut"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+</LinearLayout>

+ 55 - 0
app/src/main/res/layout/item_word_cut.xml

@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="80dp"
+    android:id="@+id/ll_item">
+        <!-- 左侧区域 -->
+        <LinearLayout
+            android:id="@+id/ll_left_area"
+            android:layout_width="40dp"
+            android:layout_height="80dp"
+            android:background="@drawable/left_round_bg"
+            android:orientation="horizontal"
+            android:visibility="gone"/>
+        <!-- 字母 -->
+        <TextView
+            android:id="@+id/tv_word"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:background="@color/colorWhite"
+            android:textSize="40sp"
+            android:textStyle="bold"
+            android:textColor="@color/colorGrayDark"
+            android:gravity="center"/>
+        <!-- 切割区域 -->
+        <LinearLayout
+            android:id="@+id/ll_slide_area"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:visibility="gone">
+            <LinearLayout
+                android:layout_width="2dp"
+                android:layout_height="match_parent"
+                android:background="@color/colorWhite"/>
+            <!-- 分割效果 -->
+            <LinearLayout
+                android:id="@+id/ll_divider"
+                android:layout_width="8dp"
+                android:layout_height="match_parent"
+                android:background="@color/textGrayColor"
+                android:orientation="horizontal"
+                android:visibility="gone"/>
+            <LinearLayout
+                android:layout_width="2dp"
+                android:layout_height="match_parent"
+                android:background="@color/colorWhite"/>
+        </LinearLayout>
+        <!-- 右侧区域 -->
+        <LinearLayout
+            android:id="@+id/ll_right_area"
+            android:layout_width="40dp"
+            android:layout_height="80dp"
+            android:background="@drawable/right_round_bg"
+            android:orientation="horizontal"
+            android:visibility="gone"/>
+</LinearLayout>