Skip to content

Commit ee73813

Browse files
committed
改造为mvvm
1 parent 9146497 commit ee73813

File tree

13 files changed

+163
-67
lines changed

13 files changed

+163
-67
lines changed

app/build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ android {
3030
// but continue the build even when errors are found:
3131
abortOnError false
3232
}
33+
dataBinding {
34+
enabled true
35+
}
3336
}
3437

3538
dependencies {
@@ -50,6 +53,14 @@ dependencies {
5053
api 'com.hjq:xxpermissions:5.5'
5154

5255

56+
//MVVM要用到的
57+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1'
58+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
59+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-alpha03"
60+
// ViewModel and LiveData
61+
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
62+
63+
5364

5465

5566
// api 'androidx.cardview:cardview:1.0.0-beta01'

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
<activity android:name=".activities.TempActivity"/>
2929
<activity
30-
android:name="com.sibyl.HttpFileDominator.activities.MainActivity"
30+
android:name=".mainactivity.view.MainActivity"
3131
android:launchMode="singleTask"
3232
android:label="@string/app_name">
3333
<intent-filter>

app/src/main/java/com/sibyl/HttpFileDominator/HttpServerConnection.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ private static String httpReturnCodeToString(int return_code) {
9898
public void run() {
9999
ipAddress = getClientIpAddress();
100100

101-
launcherActivity.sendConnectionStartMessage(ipAddress);
101+
//SasukeTodo 先注释掉,后面把Activity整好了记得打开
102+
// launcherActivity.sendConnectionStartMessage(ipAddress);
102103

103104
try {
104105
InputStream theInputStream;
@@ -132,7 +133,8 @@ public void run() {
132133
}
133134
} finally {
134135
s("Closing connection.");
135-
launcherActivity.sendConnectionEndMessage(ipAddress);
136+
//SasukeTodo 先注释掉,后面把Activity整好了记得打开
137+
// launcherActivity.sendConnectionEndMessage(ipAddress);
136138
}
137139
}
138140

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.sibyl.HttpFileDominator.activities
2+
3+
import androidx.appcompat.app.AppCompatActivity
4+
5+
/**
6+
* @author Sasuke on 2020/6/23.
7+
*/
8+
class BaseActivity: AppCompatActivity() {
9+
}

app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity.java renamed to app/src/main/java/com/sibyl/HttpFileDominator/activities/BaseActivity0.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
import java.util.ArrayList;
4646

47-
public class BaseActivity extends AppCompatActivity {
47+
public class BaseActivity0 extends AppCompatActivity {
4848

4949
public static final int HANDLER_CONNECTION_START = 42;
5050
public static final int HANDLER_CONNECTION_END = 4242;
@@ -77,12 +77,12 @@ public class BaseActivity extends AppCompatActivity {
7777

7878
public void sendConnectionStartMessage(String ipAddress) {
7979
Log.d("mm", "begin: " + ipAddress + " " + this);
80-
mHandler.handleMessage(mHandler.obtainMessage(BaseActivity.HANDLER_CONNECTION_START, ipAddress));
80+
mHandler.handleMessage(mHandler.obtainMessage(BaseActivity0.HANDLER_CONNECTION_START, ipAddress));
8181
}
8282

8383
public void sendConnectionEndMessage(String ipAddress) {
8484
Log.d("mm", "end: " + ipAddress + " " + this);
85-
mHandler.handleMessage(mHandler.obtainMessage(BaseActivity.HANDLER_CONNECTION_END, ipAddress));
85+
mHandler.handleMessage(mHandler.obtainMessage(BaseActivity0.HANDLER_CONNECTION_END, ipAddress));
8686
}
8787

8888
@Override

app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity.java renamed to app/src/main/java/com/sibyl/HttpFileDominator/activities/MainActivity0.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import java.util.Iterator;
3939
import java.util.List;
4040

41-
public class MainActivity extends BaseActivity {
41+
public class MainActivity0 extends BaseActivity0 {
4242

4343
public static final int REQUEST_CODE = 1024;
4444

@@ -151,9 +151,9 @@ public void dealChangeMode(){
151151
ArrayList<UriInterpretation> tempUris = MyHttpServer.getNormalUris();//先加载默认模式的数据
152152
if (isClipboardMode){
153153
//剪切板内容写入到文件
154-
JsonDominator.fire2Dir(ClipboardUtil.getText(MainActivity.this), getClipboardFile());
154+
JsonDominator.fire2Dir(ClipboardUtil.getText(MainActivity0.this), getClipboardFile());
155155
tempUris = new ArrayList<>();
156-
tempUris.add(new UriInterpretation(Uri.fromFile(getClipboardFile()), ClipboardUtil.getText(MainActivity.this), getContentResolver()));
156+
tempUris.add(new UriInterpretation(Uri.fromFile(getClipboardFile()), ClipboardUtil.getText(MainActivity0.this), getContentResolver()));
157157
MyHttpServer.setClipboardUris(tempUris);
158158
}
159159

@@ -247,7 +247,7 @@ protected void addNewFlex2UI(final ArrayList<UriInterpretation> newUriList, fina
247247
public void run() {
248248
//如果是剪切板模式
249249
if (newUriList.size() == 1 && newUriList.get(0).isClipboardType){
250-
final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.flex_item, flexboxLayout, false);
250+
final View view = LayoutInflater.from(MainActivity0.this).inflate(R.layout.flex_item, flexboxLayout, false);
251251
view.findViewById(R.id.divider).setVisibility(View.GONE);
252252
String showText = newUriList.get(0).clipboardText.isEmpty()?"(剪切板为空)" : newUriList.get(0).clipboardText;
253253
((TextView) view.findViewById(R.id.itemNameTv)).setText(showText);
@@ -258,7 +258,7 @@ public void run() {
258258
}
259259
//如果是普通模式
260260
for (UriInterpretation uriInterpretation : newUriList) {
261-
final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.flex_item, flexboxLayout, false);
261+
final View view = LayoutInflater.from(MainActivity0.this).inflate(R.layout.flex_item, flexboxLayout, false);
262262
view.setTag(uriInterpretation);//把uriInterpretation保存到tag,到时候点击时用它来找到实时的index
263263
((TextView) view.findViewById(R.id.itemNameTv)).setText(uriInterpretation.getPath());
264264
((ImageView) view.findViewById(R.id.isFolderIcon)).setVisibility(uriInterpretation.isDirectory() ? View.VISIBLE : View.GONE);
@@ -461,19 +461,19 @@ private void grantPermissions() {
461461
@Override
462462
public void hasPermission(List<String> granted, boolean isAll) {
463463
if (isAll) {
464-
BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity.this);
464+
BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity0.this);
465465
}
466466
}
467467

468468
@Override
469469
public void noPermission(List<String> denied, boolean quick) {
470470
if (quick) {
471-
new AlertDialog.Builder(MainActivity.this)
471+
new AlertDialog.Builder(MainActivity0.this)
472472
.setMessage("请允许权限")
473473
.setPositiveButton("好的", new DialogInterface.OnClickListener() {
474474
@Override
475475
public void onClick(DialogInterface dialog, int which) {
476-
XXPermissions.gotoPermissionSettings(MainActivity.this);
476+
XXPermissions.gotoPermissionSettings(MainActivity0.this);
477477
}
478478
})
479479
.show();

app/src/main/java/com/sibyl/HttpFileDominator/activities/TempActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.sibyl.HttpFileDominator.activities
33
import android.app.Activity
44
import android.content.Intent
55
import android.os.Bundle
6+
import com.sibyl.HttpFileDominator.mainactivity.view.MainActivity
67

78
/**
89
* @author Sasuke on 2020/6/15.
@@ -13,7 +14,7 @@ import android.os.Bundle
1314
class TempActivity : Activity() {
1415
override fun onCreate(savedInstanceState: Bundle?) {
1516
super.onCreate(savedInstanceState)
16-
startActivity(Intent(this,MainActivity::class.java))
17+
startActivity(Intent(this, MainActivity::class.java))
1718
finish()
1819
}
1920
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.sibyl.HttpFileDominator.mainactivity.model
2+
3+
import androidx.lifecycle.ViewModel
4+
import com.sibyl.HttpFileDominator.mainactivity.repo.MainRepo
5+
6+
/**
7+
* @author HUANGSHI-PC on 2020-03-06 0006.
8+
*/
9+
class MainModel(val repo: MainRepo): ViewModel() {
10+
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.sibyl.HttpFileDominator.mainactivity.repo
2+
3+
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.ViewModelProvider
5+
import com.sibyl.HttpFileDominator.mainactivity.model.MainModel
6+
7+
/**
8+
* @author HUANGSHI-PC on 2020-03-06 0006.
9+
*/
10+
class MainModelFactory(val repo: MainRepo): ViewModelProvider.Factory {
11+
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
12+
return MainModel(repo) as T
13+
}
14+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.sibyl.HttpFileDominator.mainactivity.repo
2+
3+
/**
4+
* @author HUANGSHI-PC on 2020-03-06 0006.
5+
*/
6+
class MainRepo {
7+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.sibyl.HttpFileDominator.mainactivity.view
2+
3+
import android.os.Build
4+
import android.os.Bundle
5+
import android.view.WindowManager
6+
import androidx.appcompat.app.AppCompatActivity
7+
import androidx.databinding.DataBindingUtil
8+
import androidx.lifecycle.ViewModelProviders
9+
import com.sibyl.HttpFileDominator.R
10+
import com.sibyl.HttpFileDominator.databinding.ActivityMainBinding
11+
import com.sibyl.HttpFileDominator.mainactivity.model.MainModel
12+
import com.sibyl.HttpFileDominator.mainactivity.repo.MainModelFactory
13+
import com.sibyl.HttpFileDominator.mainactivity.repo.MainRepo
14+
15+
class MainActivity : AppCompatActivity() {
16+
17+
val binding by lazy { DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main) }
18+
19+
val loginModel by lazy{ ViewModelProviders.of(this, MainModelFactory(MainRepo())).get(MainModel::class.java) }
20+
21+
override fun onCreate(savedInstanceState: Bundle?) {
22+
window.setBackgroundDrawable(null)
23+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
24+
super.onCreate(savedInstanceState)
25+
bind()
26+
27+
}
28+
29+
fun bind(){
30+
binding.apply {
31+
32+
}
33+
}
34+
}

app/src/main/java/com/sibyl/HttpFileDominator/utils/NotiDominator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import android.content.Context
88
import android.content.Intent
99
import android.os.Build
1010
import com.sibyl.HttpFileDominator.R
11-
import com.sibyl.HttpFileDominator.activities.MainActivity
1211
import com.sibyl.HttpFileDominator.activities.TempActivity
12+
import com.sibyl.HttpFileDominator.mainactivity.view.MainActivity
1313

1414
/**
1515
* @author Sasuke on 2020/6/15.
Lines changed: 58 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,73 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
xmlns:app="http://schemas.android.com/apk/res-auto"
4-
android:layout_width="match_parent"
5-
android:background="@color/main_activity_background_color"
6-
android:layout_height="match_parent">
2+
<layout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto">
74

8-
<LinearLayout
9-
android:layout_width="match_parent"
10-
android:layout_height="match_parent"
11-
android:orientation="vertical">
5+
<data>
126

13-
<include
14-
android:id="@+id/toolbar"
15-
layout="@layout/toolbar" />
7+
</data>
168

17-
<include
18-
android:id="@+id/link_layout"
19-
layout="@layout/link_layout" />
9+
<androidx.coordinatorlayout.widget.CoordinatorLayout
10+
android:layout_width="match_parent"
11+
android:background="@color/main_activity_background_color"
12+
android:layout_height="match_parent">
2013

21-
<RelativeLayout
22-
android:id="@+id/containerLayout"
23-
android:layout_marginTop="-6dp"
14+
<LinearLayout
2415
android:layout_width="match_parent"
25-
android:layout_height="match_parent">
16+
android:layout_height="match_parent"
17+
android:orientation="vertical">
18+
19+
<include
20+
android:id="@+id/toolbar"
21+
layout="@layout/toolbar" />
2622

27-
<androidx.core.widget.NestedScrollView
28-
android:id="@+id/scrolling_information"
23+
<include
24+
android:id="@+id/link_layout"
25+
layout="@layout/link_layout" />
26+
27+
<RelativeLayout
28+
android:id="@+id/containerLayout"
29+
android:layout_marginTop="-6dp"
2930
android:layout_width="match_parent"
3031
android:layout_height="match_parent">
3132

32-
<com.google.android.flexbox.FlexboxLayout
33-
android:id="@+id/fileNameContainer"
34-
android:animateLayoutChanges="true"
33+
<androidx.core.widget.NestedScrollView
34+
android:id="@+id/scrolling_information"
3535
android:layout_width="match_parent"
36-
android:layout_height="match_parent"
37-
app:flexWrap="wrap"
38-
app:alignItems="flex_start"
39-
app:alignContent="flex_start" />
36+
android:layout_height="match_parent">
4037

41-
<com.google.android.flexbox.FlexboxLayout
42-
android:id="@+id/clipboardContainer"
43-
android:animateLayoutChanges="true"
44-
android:layout_width="match_parent"
45-
android:layout_height="match_parent"
46-
app:flexWrap="wrap"
47-
app:alignItems="flex_start"
48-
app:alignContent="flex_start" />
38+
<com.google.android.flexbox.FlexboxLayout
39+
android:id="@+id/fileNameContainer"
40+
android:animateLayoutChanges="true"
41+
android:layout_width="match_parent"
42+
android:layout_height="match_parent"
43+
app:flexWrap="wrap"
44+
app:alignItems="flex_start"
45+
app:alignContent="flex_start" />
46+
47+
<com.google.android.flexbox.FlexboxLayout
48+
android:id="@+id/clipboardContainer"
49+
android:animateLayoutChanges="true"
50+
android:layout_width="match_parent"
51+
android:layout_height="match_parent"
52+
app:flexWrap="wrap"
53+
app:alignItems="flex_start"
54+
app:alignContent="flex_start" />
4955

50-
</androidx.core.widget.NestedScrollView>
51-
</RelativeLayout>
52-
<!-- </RelativeLayout>-->
56+
</androidx.core.widget.NestedScrollView>
57+
</RelativeLayout>
58+
<!-- </RelativeLayout>-->
5359

54-
</LinearLayout>
60+
</LinearLayout>
5561

56-
<com.google.android.material.floatingactionbutton.FloatingActionButton
57-
android:id="@+id/fab"
58-
android:layout_gravity="right|bottom"
59-
android:tint="@color/white"
60-
android:src="@drawable/ic_add"
61-
android:layout_height="wrap_content"
62-
android:layout_width="wrap_content"
63-
android:layout_margin="24dp"
64-
app:layout_behavior="com.sibyl.HttpFileDominator.views.ScrollAwareFABBehavior"
65-
app:backgroundTint="@color/red" />
66-
</androidx.coordinatorlayout.widget.CoordinatorLayout>
62+
<com.google.android.material.floatingactionbutton.FloatingActionButton
63+
android:id="@+id/fab"
64+
android:layout_gravity="right|bottom"
65+
android:tint="@color/white"
66+
android:src="@drawable/ic_add"
67+
android:layout_height="wrap_content"
68+
android:layout_width="wrap_content"
69+
android:layout_margin="24dp"
70+
app:layout_behavior="com.sibyl.HttpFileDominator.views.ScrollAwareFABBehavior"
71+
app:backgroundTint="@color/red" />
72+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
73+
</layout>

0 commit comments

Comments
 (0)