├── .gitignore ├── .gradle └── 2.8 │ └── taskArtifacts │ ├── cache.properties │ ├── cache.properties.lock │ ├── fileHashes.bin │ ├── fileSnapshots.bin │ ├── outputFileStates.bin │ └── taskArtifacts.bin ├── README.md ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── wildcard │ │ └── autovideoplayer │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── wildcard │ │ │ └── autovideoplayer │ │ │ ├── MainActivity.java │ │ │ ├── MainActivityFragment.java │ │ │ └── VPApplication.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── content_main.xml │ │ ├── fragment_main.xml │ │ ├── item_textview.xml │ │ └── item_videoview.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── example │ └── wildcard │ └── autovideoplayer │ └── ExampleUnitTest.java ├── autovideoplay.iml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── local.properties └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.apk 2 | build/ 3 | !.gitignore 4 | .idea -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 05 17:33:13 CST 2016 2 | -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/cache.properties.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/.gradle/2.8/taskArtifacts/cache.properties.lock -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/.gradle/2.8/taskArtifacts/fileHashes.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/fileSnapshots.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/.gradle/2.8/taskArtifacts/fileSnapshots.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/outputFileStates.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/.gradle/2.8/taskArtifacts/outputFileStates.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/taskArtifacts.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/.gradle/2.8/taskArtifacts/taskArtifacts.bin -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > 本文仿照新浪微博/QQ空间实现了滑动自动播放视频的功能。 2 | 3 | >本文来自个人博客:http://www.zhangliwei.date 4 | 5 | >如有疑问欢迎讨论,感谢您的关注。 6 | 7 | 8 | 9 | #### 效果图 10 | ![滑动自动播放1](http://i2.buimg.com/567571/fb49b7d9d13947bf.gif) 11 | ![滑动自动播放2](http://i2.buimg.com/567571/f5c131c21ba350e1.gif) 12 | 13 | --- 14 | 15 | ### 关键代码 16 | #### 1.监听滚动事件 17 | 首先要给listview添加setOnScrollListener监听,注意这个监听在recyclerView上是addOnScrollListener,也就是说下面代码同时支持recyclerView。 18 | 19 | public int firstVisible=0,visibleCount=0, totalCount=0; 20 | videoList.setOnScrollListener(new AbsListView.OnScrollListener() { 21 | @Override 22 | public void onScrollStateChanged(AbsListView view, int scrollState) { 23 | switch (scrollState) { 24 | 25 | case AbsListView.OnScrollListener.SCROLL_STATE_FLING: 26 | Log.e("videoTest", "SCROLL_STATE_FLING"); 27 | break; 28 | 29 | case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: 30 | Log.e("videoTest", "SCROLL_STATE_IDLE"); 31 | autoPlayVideo(view); 32 | break; 33 | 34 | case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: 35 | Log.e("videoTest", "SCROLL_STATE_TOUCH_SCROLL"); 36 | break; 37 | 38 | default: 39 | break; 40 | } 41 | } 42 | @Override 43 | public void onScroll(AbsListView view, int firstVisibleItem, 44 | int visibleItemCount, int totalItemCount) { 45 | // firstVisibleItem 当前第一个可见的item 46 | // visibleItemCount 当前可见的item个数 47 | if (firstVisible == firstVisibleItem) { 48 | return; 49 | } 50 | firstVisible = firstVisibleItem; 51 | visibleCount = visibleItemCount; 52 | totalCount = totalItemCount; 53 | } 54 | }); 55 | 56 | 监听里会有两个方法,**我们用onScroll方法记录 当前第一个可见Item,以及可见Item总数,用onScrollStateChanged来监听手滑动屏幕的整个过程。** 当onScrollStateChanged 中的scrollState字段值等于SCROLL_STATE_IDLE 时,代表本次滑动完毕并停止滚动🙄感兴趣的朋友可以自行百度另外两个参数的意思,没准对你的需求有帮助🙄。 57 | 58 | #### 2.处理视频逻辑 59 | 60 | void autoPlayVideo(AbsListView view){ 61 | Log.e("videoTest", "firstVisiblePos = " + firstVisible + "visibleItemCount = " + visibleCount); 62 | for (int i = 0; i < visibleCount; i++) { 63 | if (view!=null&&view.getChildAt(i)!=null&&view.getChildAt(i).findViewById(R.id.videoplayer) != null) { 64 | JCVideoPlayerStandard videoPlayerStandard1 = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.videoplayer); 65 | Rect rect = new Rect(); 66 | videoPlayerStandard1.getLocalVisibleRect(rect); 67 | int videoheight3 = videoPlayerStandard1.getHeight(); 68 | Log.e("videoTest","i="+i+"==="+"videoheight3:"+videoheight3+"==="+"rect.top:"+rect.top+"==="+"rect.bottom:"+rect.bottom); 69 | if (rect.top==0&&rect.bottom==videoheight3) 70 | { 71 | if (videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) { 72 | Log.e("videoTest", videoPlayerStandard1.currentState + "======================performClick======================"); 73 | videoPlayerStandard1.startButton.performClick(); 74 | VPApplication.instance.VideoPlaying=videoPlayerStandard1; 75 | } 76 | return; 77 | } 78 | 79 | } 80 | } 81 | Log.e("videoTest", "======================releaseAllVideos====================="); 82 | JCVideoPlayer.releaseAllVideos(); 83 | VPApplication.instance.VideoPlaying=null; 84 | } 85 | 86 | 首先是根据总数循环判断 Item 是否有视频,如果有再利用Rect类获取视图在屏幕坐标中的可视区域。基本核心代码就这些是不是非常简单? 87 | 88 | ---- 89 | 90 | ### 项目源码 [autovideoplay](https://github.com/zzzlw/autovideoplayer) 91 | ### 技术博客 [Wells'Note](http://zhangliwei.date/) 92 | 93 | ### 视频播放器依赖 94 | compile 'fm.jiecao:jiecaovideoplayer:4.6.3' 95 | 96 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.3" 6 | 7 | defaultConfig { 8 | applicationId "com.example.wildcard.autovideoplayer" 9 | minSdkVersion 14 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | testCompile 'junit:junit:4.12' 25 | compile 'com.android.support:appcompat-v7:23.4.0' 26 | compile 'com.android.support:design:23.4.0' 27 | compile 'fm.jiecao:jiecaovideoplayer:4.6.3' 28 | compile 'com.jakewharton:butterknife:7.0.1' 29 | compile 'com.github.bumptech.glide:glide:3.7.0' 30 | 31 | 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/WildCard/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/example/wildcard/autovideoplayer/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.example.wildcard.autovideoplayer; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/wildcard/autovideoplayer/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.example.wildcard.autovideoplayer; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.support.v7.widget.Toolbar; 6 | 7 | import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; 8 | 9 | public class MainActivity extends AppCompatActivity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_main); 15 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 16 | setSupportActionBar(toolbar); 17 | } 18 | 19 | @Override 20 | protected void onPause() { 21 | super.onPause(); 22 | if(VPApplication.instance.VideoPlaying!=null) 23 | { 24 | if(VPApplication.instance.VideoPlaying.currentState== JCVideoPlayer.CURRENT_STATE_PLAYING) 25 | { 26 | VPApplication.instance.VideoPlaying.startButton.performClick(); 27 | }else if (VPApplication.instance.VideoPlaying.currentState== JCVideoPlayer.CURRENT_STATE_PREPAREING) 28 | { 29 | JCVideoPlayer.releaseAllVideos(); 30 | } 31 | } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/wildcard/autovideoplayer/MainActivityFragment.java: -------------------------------------------------------------------------------- 1 | package com.example.wildcard.autovideoplayer; 2 | 3 | import android.content.Context; 4 | import android.graphics.Rect; 5 | import android.os.Bundle; 6 | import android.support.v4.app.Fragment; 7 | import android.util.Log; 8 | import android.view.LayoutInflater; 9 | import android.view.View; 10 | import android.view.ViewGroup; 11 | import android.widget.AbsListView; 12 | import android.widget.BaseAdapter; 13 | import android.widget.ImageView; 14 | import android.widget.ListView; 15 | 16 | import com.bumptech.glide.Glide; 17 | 18 | import butterknife.Bind; 19 | import butterknife.ButterKnife; 20 | import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; 21 | import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; 22 | 23 | /** 24 | * A placeholder fragment containing a simple view. 25 | */ 26 | public class MainActivityFragment extends Fragment { 27 | 28 | @Bind(R.id.videoList) 29 | ListView videoList; 30 | 31 | @Override 32 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 33 | Bundle savedInstanceState) { 34 | View view = inflater.inflate(R.layout.fragment_main, container, false); 35 | ButterKnife.bind(this, view); 36 | return view; 37 | 38 | } 39 | public int firstVisible=0,visibleCount=0, totalCount=0; 40 | @Override 41 | public void onViewCreated(View view, Bundle savedInstanceState) { 42 | super.onViewCreated(view, savedInstanceState); 43 | 44 | // recyclerView.addOnScrollListener 45 | videoList.setAdapter(new VideoListAdapter(getActivity())); 46 | videoList.setOnScrollListener(new AbsListView.OnScrollListener() { 47 | 48 | @Override 49 | public void onScrollStateChanged(AbsListView view, int scrollState) { 50 | switch (scrollState) { 51 | case AbsListView.OnScrollListener.SCROLL_STATE_FLING: 52 | Log.e("videoTest", "SCROLL_STATE_FLING"); 53 | break; 54 | case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: 55 | Log.e("videoTest", "SCROLL_STATE_IDLE"); 56 | autoPlayVideo(view); 57 | break; 58 | case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: 59 | Log.e("videoTest", "SCROLL_STATE_TOUCH_SCROLL"); 60 | 61 | break; 62 | default: 63 | break; 64 | } 65 | } 66 | 67 | @Override 68 | public void onScroll(AbsListView view, int firstVisibleItem, 69 | int visibleItemCount, int totalItemCount) { 70 | // firstVisibleItem 当前第一个可见的item 71 | // visibleItemCount 当前可见的item个数 72 | if (firstVisible == firstVisibleItem) { 73 | return; 74 | } 75 | firstVisible = firstVisibleItem; 76 | visibleCount = visibleItemCount; 77 | totalCount = totalItemCount; 78 | } 79 | }); 80 | } 81 | void autoPlayVideo(AbsListView view){ 82 | Log.e("videoTest", "firstVisiblePos = " + firstVisible + "visibleItemCount = " + visibleCount); 83 | for (int i = 0; i < visibleCount; i++) { 84 | if (view!=null&&view.getChildAt(i)!=null&&view.getChildAt(i).findViewById(R.id.videoplayer) != null) { 85 | JCVideoPlayerStandard videoPlayerStandard1 = (JCVideoPlayerStandard) view.getChildAt(i).findViewById(R.id.videoplayer); 86 | Rect rect = new Rect(); 87 | videoPlayerStandard1.getLocalVisibleRect(rect); 88 | int videoheight3 = videoPlayerStandard1.getHeight(); 89 | Log.e("videoTest","i="+i+"==="+"videoheight3:"+videoheight3+"==="+"rect.top:"+rect.top+"==="+"rect.bottom:"+rect.bottom); 90 | if (rect.top==0&&rect.bottom==videoheight3) 91 | { 92 | if (videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_NORMAL || videoPlayerStandard1.currentState == JCVideoPlayer.CURRENT_STATE_ERROR) { 93 | Log.e("videoTest", videoPlayerStandard1.currentState + "======================performClick======================"); 94 | videoPlayerStandard1.startButton.performClick(); 95 | VPApplication.instance.VideoPlaying=videoPlayerStandard1; 96 | } 97 | return; 98 | } 99 | 100 | } 101 | } 102 | Log.e("videoTest", "======================releaseAllVideos====================="); 103 | JCVideoPlayer.releaseAllVideos(); 104 | VPApplication.instance.VideoPlaying=null; 105 | } 106 | public class VideoListAdapter extends BaseAdapter { 107 | 108 | int[] videoIndexs = {0,0,1,1,1,0,0,1,0,0,1,1,1,0,0}; 109 | Context context; 110 | LayoutInflater mInflater; 111 | 112 | public VideoListAdapter(Context context) { 113 | this.context = context; 114 | mInflater = LayoutInflater.from(context); 115 | } 116 | 117 | @Override 118 | public int getCount() { 119 | return videoIndexs.length; 120 | } 121 | 122 | @Override 123 | public Object getItem(int position) { 124 | return null; 125 | } 126 | 127 | @Override 128 | public long getItemId(int position) { 129 | return 0; 130 | } 131 | 132 | @Override 133 | public View getView(int position, View convertView, ViewGroup parent) { 134 | //This is the point 135 | if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) { 136 | ((VideoHolder) convertView.getTag()).jcVideoPlayer.release(); 137 | } 138 | 139 | if (videoIndexs[position] == 1) { 140 | VideoHolder viewHolder; 141 | if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof VideoHolder) { 142 | viewHolder = (VideoHolder) convertView.getTag(); 143 | } else { 144 | viewHolder = new VideoHolder(); 145 | convertView = mInflater.inflate(R.layout.item_videoview, null); 146 | viewHolder.jcVideoPlayer = (JCVideoPlayerStandard) convertView.findViewById(R.id.videoplayer); 147 | convertView.setTag(viewHolder); 148 | } 149 | 150 | boolean setUp = viewHolder.jcVideoPlayer.setUp( 151 | "http://gslb.miaopai.com/stream/ed5HCfnhovu3tyIQAiv60Q__.mp4", JCVideoPlayer.SCREEN_LAYOUT_LIST, 152 | ""); 153 | if (setUp) { 154 | Glide.with(getActivity()).load("http://a4.att.hudong.com/05/71/01300000057455120185716259013.jpg").into(viewHolder.jcVideoPlayer.thumbImageView); 155 | } 156 | } else { 157 | 158 | ImageViewHolder imageViewHolder; 159 | if (convertView != null && convertView.getTag() != null && convertView.getTag() instanceof ImageViewHolder) { 160 | imageViewHolder = (ImageViewHolder) convertView.getTag(); 161 | } else { 162 | imageViewHolder = new ImageViewHolder(); 163 | LayoutInflater mInflater = LayoutInflater.from(context); 164 | convertView = mInflater.inflate(R.layout.item_textview, null); 165 | imageViewHolder.imageView = (ImageView) convertView.findViewById(R.id.image_view); 166 | Glide.with(getActivity()).load("http://img04.tooopen.com/images/20131019/sy_43185978222.jpg").into(imageViewHolder.imageView); 167 | convertView.setTag(imageViewHolder); 168 | } 169 | 170 | } 171 | return convertView; 172 | } 173 | 174 | class VideoHolder { 175 | JCVideoPlayerStandard jcVideoPlayer; 176 | } 177 | 178 | class ImageViewHolder { 179 | ImageView imageView; 180 | } 181 | } 182 | 183 | @Override 184 | public void onDestroyView() { 185 | super.onDestroyView(); 186 | ButterKnife.unbind(this); 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /app/src/main/java/com/example/wildcard/autovideoplayer/VPApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.wildcard.autovideoplayer; 2 | 3 | import android.app.Application; 4 | 5 | import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; 6 | 7 | /** 8 | * @author : Wells 9 | * @time : 16/9/5 10 | * @notes : 11 | */ 12 | public class VPApplication extends Application { 13 | public static VPApplication instance; 14 | public JCVideoPlayerStandard VideoPlaying; 15 | 16 | @Override 17 | public void onCreate() { 18 | super.onCreate(); 19 | instance = this; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_main.xml: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_main.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_textview.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 16 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_videoview.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 15 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zzzlw/autovideoplayer/319d875afc50026d70c2ee7013a0b95ed73a923b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | autoVideoPlayer 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |