diff --git a/app/build.gradle b/app/build.gradle index 7a40823..5d39e8a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,6 +30,9 @@ android { // but continue the build even when errors are found: abortOnError false } + dataBinding { + enabled true + } } dependencies { @@ -50,6 +53,14 @@ dependencies { api 'com.hjq:xxpermissions:5.5' + //MVVM要用到的 + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1' + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-alpha03" + // ViewModel and LiveData + implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' + + // api 'androidx.cardview:cardview:1.0.0-beta01' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 85f47ab..42addca 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,7 +27,7 @@ diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/HttpServerConnection.java b/app/src/main/java/com/sibyl/HttpFileDominator/HttpServerConnection.java index 98d0498..03f52e4 100644 --- a/app/src/main/java/com/sibyl/HttpFileDominator/HttpServerConnection.java +++ b/app/src/main/java/com/sibyl/HttpFileDominator/HttpServerConnection.java @@ -98,7 +98,8 @@ private static String httpReturnCodeToString(int return_code) { public void run() { ipAddress = getClientIpAddress(); - launcherActivity.sendConnectionStartMessage(ipAddress); + //SasukeTodo 先注释掉,后面把Activity整好了记得打开 +// launcherActivity.sendConnectionStartMessage(ipAddress); try { InputStream theInputStream; @@ -132,7 +133,8 @@ public void run() { } } finally { s("Closing connection."); - launcherActivity.sendConnectionEndMessage(ipAddress); + //SasukeTodo 先注释掉,后面把Activity整好了记得打开 +// launcherActivity.sendConnectionEndMessage(ipAddress); } } diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.kt b/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.kt new file mode 100644 index 0000000..5ae37da --- /dev/null +++ b/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.kt @@ -0,0 +1,9 @@ +package com.sibyl.HttpFileDominator.activities + +import androidx.appcompat.app.AppCompatActivity + +/** + * @author Sasuke on 2020/6/23. + */ +class BaseActivity: AppCompatActivity() { +} \ No newline at end of file diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.java b/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity0.java similarity index 98% rename from app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.java rename to app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity0.java index 4ad8fa6..c5e388c 100644 --- a/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.java +++ b/app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity0.java @@ -44,7 +44,7 @@ import java.util.ArrayList; -public class BaseActivity extends AppCompatActivity { +public class BaseActivity0 extends AppCompatActivity { public static final int HANDLER_CONNECTION_START = 42; public static final int HANDLER_CONNECTION_END = 4242; @@ -77,12 +77,12 @@ public class BaseActivity extends AppCompatActivity { public void sendConnectionStartMessage(String ipAddress) { Log.d("mm", "begin: " + ipAddress + " " + this); - mHandler.handleMessage(mHandler.obtainMessage(BaseActivity.HANDLER_CONNECTION_START, ipAddress)); + mHandler.handleMessage(mHandler.obtainMessage(BaseActivity0.HANDLER_CONNECTION_START, ipAddress)); } public void sendConnectionEndMessage(String ipAddress) { Log.d("mm", "end: " + ipAddress + " " + this); - mHandler.handleMessage(mHandler.obtainMessage(BaseActivity.HANDLER_CONNECTION_END, ipAddress)); + mHandler.handleMessage(mHandler.obtainMessage(BaseActivity0.HANDLER_CONNECTION_END, ipAddress)); } @Override diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity.java b/app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity0.java similarity index 98% rename from app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity.java rename to app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity0.java index a140ebf..3f38acb 100644 --- a/app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity.java +++ b/app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity0.java @@ -38,7 +38,7 @@ import java.util.Iterator; import java.util.List; -public class MainActivity extends BaseActivity { +public class MainActivity0 extends BaseActivity0 { public static final int REQUEST_CODE = 1024; @@ -151,9 +151,9 @@ public void dealChangeMode(){ ArrayList tempUris = MyHttpServer.getNormalUris();//先加载默认模式的数据 if (isClipboardMode){ //剪切板内容写入到文件 - JsonDominator.fire2Dir(ClipboardUtil.getText(MainActivity.this), getClipboardFile()); + JsonDominator.fire2Dir(ClipboardUtil.getText(MainActivity0.this), getClipboardFile()); tempUris = new ArrayList<>(); - tempUris.add(new UriInterpretation(Uri.fromFile(getClipboardFile()), ClipboardUtil.getText(MainActivity.this), getContentResolver())); + tempUris.add(new UriInterpretation(Uri.fromFile(getClipboardFile()), ClipboardUtil.getText(MainActivity0.this), getContentResolver())); MyHttpServer.setClipboardUris(tempUris); } @@ -247,7 +247,7 @@ protected void addNewFlex2UI(final ArrayList newUriList, fina public void run() { //如果是剪切板模式 if (newUriList.size() == 1 && newUriList.get(0).isClipboardType){ - final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.flex_item, flexboxLayout, false); + final View view = LayoutInflater.from(MainActivity0.this).inflate(R.layout.flex_item, flexboxLayout, false); view.findViewById(R.id.divider).setVisibility(View.GONE); String showText = newUriList.get(0).clipboardText.isEmpty()?"(剪切板为空)" : newUriList.get(0).clipboardText; ((TextView) view.findViewById(R.id.itemNameTv)).setText(showText); @@ -258,7 +258,7 @@ public void run() { } //如果是普通模式 for (UriInterpretation uriInterpretation : newUriList) { - final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.flex_item, flexboxLayout, false); + final View view = LayoutInflater.from(MainActivity0.this).inflate(R.layout.flex_item, flexboxLayout, false); view.setTag(uriInterpretation);//把uriInterpretation保存到tag,到时候点击时用它来找到实时的index ((TextView) view.findViewById(R.id.itemNameTv)).setText(uriInterpretation.getPath()); ((ImageView) view.findViewById(R.id.isFolderIcon)).setVisibility(uriInterpretation.isDirectory() ? View.VISIBLE : View.GONE); @@ -461,19 +461,19 @@ private void grantPermissions() { @Override public void hasPermission(List granted, boolean isAll) { if (isAll) { - BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity.this); + BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity0.this); } } @Override public void noPermission(List denied, boolean quick) { if (quick) { - new AlertDialog.Builder(MainActivity.this) + new AlertDialog.Builder(MainActivity0.this) .setMessage("请允许权限") .setPositiveButton("好的", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - XXPermissions.gotoPermissionSettings(MainActivity.this); + XXPermissions.gotoPermissionSettings(MainActivity0.this); } }) .show(); diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/activities/TempActivity.kt b/app/src/main/java/com/sibyl/HttpFileDominator/activities/TempActivity.kt index 86c1d04..12674d9 100644 --- a/app/src/main/java/com/sibyl/HttpFileDominator/activities/TempActivity.kt +++ b/app/src/main/java/com/sibyl/HttpFileDominator/activities/TempActivity.kt @@ -3,6 +3,7 @@ package com.sibyl.HttpFileDominator.activities import android.app.Activity import android.content.Intent import android.os.Bundle +import com.sibyl.HttpFileDominator.mainactivity.view.MainActivity /** * @author Sasuke on 2020/6/15. @@ -13,7 +14,7 @@ import android.os.Bundle class TempActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - startActivity(Intent(this,MainActivity::class.java)) + startActivity(Intent(this, MainActivity::class.java)) finish() } } \ No newline at end of file diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/model/MainModel.kt b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/model/MainModel.kt new file mode 100644 index 0000000..6e99471 --- /dev/null +++ b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/model/MainModel.kt @@ -0,0 +1,11 @@ +package com.sibyl.HttpFileDominator.mainactivity.model + +import androidx.lifecycle.ViewModel +import com.sibyl.HttpFileDominator.mainactivity.repo.MainRepo + +/** + * @author HUANGSHI-PC on 2020-03-06 0006. + */ +class MainModel(val repo: MainRepo): ViewModel() { + +} \ No newline at end of file diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainModelFactory.kt b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainModelFactory.kt new file mode 100644 index 0000000..0886684 --- /dev/null +++ b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainModelFactory.kt @@ -0,0 +1,14 @@ +package com.sibyl.HttpFileDominator.mainactivity.repo + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.sibyl.HttpFileDominator.mainactivity.model.MainModel + +/** + * @author HUANGSHI-PC on 2020-03-06 0006. + */ +class MainModelFactory(val repo: MainRepo): ViewModelProvider.Factory { + override fun create(modelClass: Class): T { + return MainModel(repo) as T + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainRepo.kt b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainRepo.kt new file mode 100644 index 0000000..a2e3bee --- /dev/null +++ b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/repo/MainRepo.kt @@ -0,0 +1,7 @@ +package com.sibyl.HttpFileDominator.mainactivity.repo + +/** + * @author HUANGSHI-PC on 2020-03-06 0006. + */ +class MainRepo { +} \ No newline at end of file diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/view/MainActivity.kt b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/view/MainActivity.kt new file mode 100644 index 0000000..8e530fc --- /dev/null +++ b/app/src/main/java/com/sibyl/HttpFileDominator/mainactivity/view/MainActivity.kt @@ -0,0 +1,34 @@ +package com.sibyl.HttpFileDominator.mainactivity.view + +import android.os.Build +import android.os.Bundle +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import androidx.databinding.DataBindingUtil +import androidx.lifecycle.ViewModelProviders +import com.sibyl.HttpFileDominator.R +import com.sibyl.HttpFileDominator.databinding.ActivityMainBinding +import com.sibyl.HttpFileDominator.mainactivity.model.MainModel +import com.sibyl.HttpFileDominator.mainactivity.repo.MainModelFactory +import com.sibyl.HttpFileDominator.mainactivity.repo.MainRepo + +class MainActivity : AppCompatActivity() { + + val binding by lazy { DataBindingUtil.setContentView(this, R.layout.activity_main) } + + val loginModel by lazy{ ViewModelProviders.of(this, MainModelFactory(MainRepo())).get(MainModel::class.java) } + + override fun onCreate(savedInstanceState: Bundle?) { + window.setBackgroundDrawable(null) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS) + super.onCreate(savedInstanceState) + bind() + + } + + fun bind(){ + binding.apply { + + } + } +} diff --git a/app/src/main/java/com/sibyl/HttpFileDominator/utils/NotiDominator.kt b/app/src/main/java/com/sibyl/HttpFileDominator/utils/NotiDominator.kt index eb0458e..b2c5485 100644 --- a/app/src/main/java/com/sibyl/HttpFileDominator/utils/NotiDominator.kt +++ b/app/src/main/java/com/sibyl/HttpFileDominator/utils/NotiDominator.kt @@ -8,8 +8,8 @@ import android.content.Context import android.content.Intent import android.os.Build import com.sibyl.HttpFileDominator.R -import com.sibyl.HttpFileDominator.activities.MainActivity import com.sibyl.HttpFileDominator.activities.TempActivity +import com.sibyl.HttpFileDominator.mainactivity.view.MainActivity /** * @author Sasuke on 2020/6/15. diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 89d0680..2a49e22 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,66 +1,73 @@ - + - + - + - + - + android:layout_height="match_parent" + android:orientation="vertical"> + + - + + - + android:layout_height="match_parent"> - + + + - - - + + + - + - - \ No newline at end of file + + + \ No newline at end of file