From 527587b926320edf58e69e2504eaa58904663408 Mon Sep 17 00:00:00 2001 From: Administrator <981964879@qq.com> Date: Tue, 2 Mar 2021 16:25:11 +0800 Subject: [PATCH] =?UTF-8?q?version:=20update:=E5=A2=9E=E5=8A=A0=E5=88=B7?= =?UTF-8?q?=E6=96=B0=EF=BC=8C=E6=9B=B4=E6=8D=A2=E8=83=8C=E6=99=AF=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=20fix=20bug:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 10 +- .../videoplayer/activity/MainActivity.java | 111 +++++++++++++++++- .../videoplayer/adapter/VideoAdapter.java | 8 +- app/src/main/res/drawable-hdpi/menu_back.png | Bin 0 -> 1484 bytes .../main/res/drawable-hdpi/menu_refresh.png | Bin 0 -> 1926 bytes .../main/res/layout-land/activity_main.xml | 27 ++++- .../main/res/layout-port/activity_main.xml | 28 ++++- app/src/main/res/layout/item_videofile.xml | 7 +- app/src/main/res/menu/main.xml | 9 ++ app/src/main/res/values/colors.xml | 2 +- app/src/main/res/values/styles.xml | 8 +- 11 files changed, 186 insertions(+), 24 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/menu_back.png create mode 100644 app/src/main/res/drawable-hdpi/menu_refresh.png create mode 100644 app/src/main/res/menu/main.xml diff --git a/app/build.gradle b/app/build.gradle index 14b95ec..d6d3cba 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,7 +16,7 @@ android { multiDexEnabled true ndk { // add support lib - abiFilters 'armeabi-v7a' //, 'arm64-v8a'//, "mips" //,'armeabi''x86',, 'x86_64', + abiFilters /*"armeabi",*/ "armeabi-v7a", "arm64-v8a", "x86"/*, "x86_64", "mips", "mips64"*/ } lintOptions { @@ -71,6 +71,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' + implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' @@ -87,11 +88,12 @@ dependencies { implementation 'com.danikula:videocache:2.7.0' implementation 'com.aliyun.sdk.android:AliyunPlayer:4.5.0-full' implementation 'com.alivc.conan:AlivcConan:0.9.5' - implementation 'com.scwang.smart:refresh-layout-kernel:2.0.1' - implementation 'com.scwang.smart:refresh-header-material:2.0.1' - implementation 'com.scwang.smart:refresh-footer-classics:2.0.1' +// implementation 'com.scwang.smart:menu_refresh-layout-kernel:2.0.1' +// implementation 'com.scwang.smart:menu_refresh-header-material:2.0.1' +// implementation 'com.scwang.smart:menu_refresh-footer-classics:2.0.1' implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8' implementation 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3' + implementation 'com.github.SheHuan:NiceImageView:1.0.5' implementation project(path: ':library') } diff --git a/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java b/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java index 246acb4..b0a8f31 100644 --- a/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java +++ b/app/src/main/java/com/uiui/videoplayer/activity/MainActivity.java @@ -1,26 +1,42 @@ package com.uiui.videoplayer.activity; import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.Manifest; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.style.ForegroundColorSpan; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.WindowManager; +import android.widget.TextView; import com.uiui.videoplayer.R; import com.uiui.videoplayer.base.RecycleGridLayoutManager; import com.uiui.videoplayer.base.SpacesItemDecoration; import com.uiui.videoplayer.adapter.VideoAdapter; +import com.uiui.videoplayer.utils.ToastUtil; import java.io.File; import java.util.ArrayList; @@ -32,9 +48,12 @@ public class MainActivity extends AppCompatActivity { String[] permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; private RecyclerView recyclerView; + private TextView tips; + private SwipeRefreshLayout refreshLayout; private VideoAdapter adapter; private RecycleGridLayoutManager mManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -68,7 +87,19 @@ public class MainActivity extends AppCompatActivity { } private void initView() { + initActionBar(); + tips = findViewById(R.id.tips); + refreshLayout = findViewById(R.id.swipeRefreshLayout); + refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + ScanTask scanTask = new ScanTask(); + scanTask.execute(); + } + }); + refreshLayout.setRefreshing(true); recyclerView = findViewById(R.id.recyclerView); + ((SimpleItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false); int orientation = getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_LANDSCAPE) { mManager = new RecycleGridLayoutManager(MainActivity.this, 3); @@ -82,6 +113,34 @@ public class MainActivity extends AppCompatActivity { ((DefaultItemAnimator) recyclerView.getItemAnimator()).setSupportsChangeAnimations(false); } + private void initActionBar() { + setToolbarCustomTheme(); + //显示返回按钮 + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setHomeButtonEnabled(true); + actionBar.setDisplayHomeAsUpEnabled(true); + SpannableString spannableString = new SpannableString(getString(R.string.app_name)); + ForegroundColorSpan colorSpan = new ForegroundColorSpan(getResources().getColor(R.color.defaultColor)); + spannableString.setSpan(colorSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + actionBar.setTitle(spannableString); + } + // 系统 6.0 以上 状态栏白底黑字的实现方法 + getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + + //自定义颜色返回按钮 + protected void setToolbarCustomTheme() { + Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_material); + if (upArrow != null) { + upArrow.setColorFilter(ContextCompat.getColor(this, R.color.defaultColor), PorterDuff.Mode.SRC_ATOP); + if (getSupportActionBar() != null) { + getSupportActionBar().setHomeAsUpIndicator(upArrow); + } + } + } + + // private String[] getFolder(String folderPath) { // // } @@ -123,7 +182,7 @@ public class MainActivity extends AppCompatActivity { } private static final String[] extension = new String[]{ - ".3gp", ".avi", ".flv", ".mkv", ".mov", ".mp4", ".webm" + ".3gp", ".avi", ".flv", ".mkv", ".mov", ".mp4", ".webm" }; private static boolean isVideoFormat(String filePath) { @@ -186,9 +245,17 @@ public class MainActivity extends AppCompatActivity { protected void onPostExecute(List strings) { super.onPostExecute(strings); Log.e("ScanTask", "onPostExecute: " + strings); - adapter = new VideoAdapter(MainActivity.this, strings); + if (strings.size() == 0) { + tips.setVisibility(View.VISIBLE); + recyclerView.setVisibility(View.GONE); + } else { + tips.setVisibility(View.GONE); + recyclerView.setVisibility(View.VISIBLE); + adapter = new VideoAdapter(MainActivity.this, strings); // recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this)); - recyclerView.setAdapter(adapter); + recyclerView.setAdapter(adapter); + } + refreshLayout.setRefreshing(false); } } @@ -219,4 +286,42 @@ public class MainActivity extends AppCompatActivity { } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main, menu); + return super.onCreateOptionsMenu(menu); + } + + + /** + * 监听标题栏按钮点击事件. + * + * @param item 按钮 + * @return 结果 + */ + @Override + public boolean onOptionsItemSelected(MenuItem item) { + //返回按钮点击事件 + switch (item.getItemId()) { + case android.R.id.home: + if (System.currentTimeMillis() - mPreClickTime > 1000) { + ToastUtil.show("再按一次,退出"); + mPreClickTime = System.currentTimeMillis(); + } else { + finish(); + } + break; + case R.id.refresh: + refreshLayout.setRefreshing(true); + ScanTask scanTask = new ScanTask(); + scanTask.execute(); + break; + } + + return super.onOptionsItemSelected(item); + } + + private long mPreClickTime; + + } diff --git a/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java b/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java index af7a875..dd4e421 100644 --- a/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java +++ b/app/src/main/java/com/uiui/videoplayer/adapter/VideoAdapter.java @@ -21,6 +21,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; +import com.shehuan.niv.NiceImageView; import com.uiui.videoplayer.R; import com.uiui.videoplayer.activity.ActivityTikTok; import com.uiui.videoplayer.utils.ToastUtil; @@ -153,6 +154,11 @@ public class VideoAdapter extends RecyclerView.Adapter return name; } + @Override + public int getItemViewType(int position) { + return position; + } + /** * 判断Activity是否Destroy * @@ -168,7 +174,7 @@ public class VideoAdapter extends RecyclerView.Adapter } static class VideoHolder extends RecyclerView.ViewHolder { - ImageView video_image; + NiceImageView video_image; TextView title, duration; ConstraintLayout root; diff --git a/app/src/main/res/drawable-hdpi/menu_back.png b/app/src/main/res/drawable-hdpi/menu_back.png new file mode 100644 index 0000000000000000000000000000000000000000..b684d572848e5096ca4b390d26ee2286bd36ddf2 GIT binary patch literal 1484 zcmeAS@N?(olHy`uVBq!ia0vp^;y|py!3HEn*%EI6DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_cg49tp|ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XR4cQU}&OXZmDNz zYG`6%sH0$HU}&swV61OwtZQgwWngJ#XsQ4ONh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*s+SwSN_GcP5- zyjT;g+}GF2Gq1QLF)umQ)5TT^XnMv>2~2MaLa!xGy`YqkTL84#CABECEH%ZgC_h&L>|?7;+-@<$ zX&zK>3U0TUpPC0u>_xy-&6(IM!@$7g=;`7Z zQgLg`bYG3MK#Al1w|jX_H*PrKcInKiq4df1mUG-e>#g^FG@=pZB_I z-tt9}8X`fAxl%Puhu3Y&P7FBwR44jTXM*q)uKTliKZb1Jwd1~@q9XLtRP;RCZWGo+ z*O}c`Bq;rx*m}8jz3iD+UIB%(nq(&^)$~4?UZc@bA^3xPQplaWV3v8f znl1XGT-hUmf5()s<-Yr&yDctDV0DFbgy>goucU$xQHvvv>`rAlaL&=rqI&hi=ts>~ zX*d6U?$A%Jyn9`&M5d(cm!Ssx_lIS-8{xRe0yRD6 ziZb&HW*Gb4W@=ARD2}}H^ofSx_hS}8OtYCEn#6psJ;c21P*s%K0r7{~hvM$!KjwCN zG_Ois`Q!Qr9zUiTgw}=~F=V}-Bz@KGvQbv@6E0bsMlO--NB8O(r0cBXmA&%tQ}B+c z+T9C{P6d=)=s6uSrS^`g*mFKBi)&BCJBk!@=-a}YWv|}+m3row_I)c=QQ|8 zKkC}=Wbb0jF4Ghv{V1h-LD&`Jj7*1xyoI$*x@`P0{tsQ(ZBkqpv4-Iem%Oa*tDKI> ze;>bnN*#cC@iB)n|b zZWP}Z^rOwkecjo|6L`4eo8RuY^x7i%FI1*VEP)}DrE+gyLRC7beD!qob6Mw<&;$Tx ClP44a literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/menu_refresh.png b/app/src/main/res/drawable-hdpi/menu_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3fab232b340d4a0b99c6428eb4ea6c6183df91 GIT binary patch literal 1926 zcmeAS@N?(olHy`uVBq!ia0vp^T0pG9!3HEdxHAHPlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24=;~kcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gu2HtFf>sxx70H< zH8im>)KM@pFf`UTFxEFT)-^P;GO)BVG*y5CC7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcp0+w{G(ayiGsViq&CSxq)WFr;$G&eP`1g19yq1O$kUQkNNEdbi=l3J8mmYU*Ll%J~r_OVqaZnrq& zG!Lpb1-DyVaO%|uIz}H9uSoF>69Oh45EGtifgE_cPt5}+_99@a{^qhx513hgd%8G= zRNT4}ne8DGC^B#EwlgM+7Bz7gHw*Ecjk!2!6FaM;E5DM~rXH^oQ@TEdJF5KE^iY}{ zr;>W1|3b$Bjj9!qVOeP@DME`}{d>7i|4O`Fe#^LI*O_&z->tdac;2}9*||IU?{|K` zQ{2zD{r1|gZZUe{I#)^*IA?J5u(vV!J>b5;xQFpoL(v1p4~}(oe7vy7mo)z(_wq5Xg!)0)g zu}Y-c+U0i`^P3#N!@!ZFIYU2EDDHu{`jdCx7(yUHdEJMH_Djs%JNO1 z44?2@`=Xw2JsMJaPyWt&BHgOk9plISd|sz5U&P`Ge;$_|UVW@%oftp&#|@X27EM{Q zFcG_96ULXpUF^|>8bvC*@I^)ZpLm?+G=_3 z+aEuzzeR!T*WwFbdJ5Z?E3y7AJ9+eE^#;Z7rqUgeVM{;9X@5_S?pk+bjhMCYRL$v! z&$;~PR$OG1w(G4=$UGk9w?10}Z=TBW-V$|3{pQRU!Vh%sA5RFMk>b5*&fGf!+t&P3 zX=&v8C^}D%Bic%;{hRQ~om281rWb}ji(e#hb#;LLO|fMv7Y{0Vw(stisSL85Y{dJ+ zDDqyL_~Yg?TN_p@sl0F03I?haT3nGj$H6k3_gKayPxIIrMhBlyUawm+_r_ecj!9ip zRZbSCx2}{?>8^eEHRFSnmh%j;ht92HlS(9)`xMTIeiR?M=xt`ZIi%&U3JSoHQZl>(`=q?w!|HnjLYMc(tPUwZ~x-|5U54{-Yw|>9cC= z;y;TN?e^7Yj+M#}@2C=IqZpJi$P>XPJ)572Fj|b)xqF{;hj}Vb7F+%RA0|+6bx{Jzf1=);T3K0RXB5@%R7$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 4e82778..3ed8fc4 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -1,16 +1,33 @@ - + android:layout_height="match_parent" + > + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml index 4e82778..52d8146 100644 --- a/app/src/main/res/layout-port/activity_main.xml +++ b/app/src/main/res/layout-port/activity_main.xml @@ -1,16 +1,34 @@ - + android:layout_height="match_parent" + android:background="@color/white" + > + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/item_videofile.xml b/app/src/main/res/layout/item_videofile.xml index 3cf68d7..4d85f5b 100644 --- a/app/src/main/res/layout/item_videofile.xml +++ b/app/src/main/res/layout/item_videofile.xml @@ -6,15 +6,18 @@ android:layout_height="wrap_content" android:gravity="center"> - diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml new file mode 100644 index 0000000..743c749 --- /dev/null +++ b/app/src/main/res/menu/main.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 379e3ae..4882ca7 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,5 +5,5 @@ #03DAC5 #FFFFFF #000000 - + #333333 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5885930..fb9dd74 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -3,9 +3,11 @@ + +