Skip to content

Commit

Permalink
改造为mvvm
Browse files Browse the repository at this point in the history
  • Loading branch information
cheetah747 committed Jun 23, 2020
1 parent 9146497 commit ee73813
Show file tree
Hide file tree
Showing 13 changed files with 163 additions and 67 deletions.
11 changes: 11 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ android {
// but continue the build even when errors are found:
abortOnError false
}
dataBinding {
enabled true
}
}

dependencies {
Expand All @@ -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'
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

<activity android:name=".activities.TempActivity"/>
<activity
android:name="com.sibyl.HttpFileDominator.activities.MainActivity"
android:name=".mainactivity.view.MainActivity"
android:launchMode="singleTask"
android:label="@string/app_name">
<intent-filter>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -132,7 +133,8 @@ public void run() {
}
} finally {
s("Closing connection.");
launcherActivity.sendConnectionEndMessage(ipAddress);
//SasukeTodo 先注释掉,后面把Activity整好了记得打开
// launcherActivity.sendConnectionEndMessage(ipAddress);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.sibyl.HttpFileDominator.activities

import androidx.appcompat.app.AppCompatActivity

/**
* @author Sasuke on 2020/6/23.
*/
class BaseActivity: AppCompatActivity() {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -151,9 +151,9 @@ public void dealChangeMode(){
ArrayList<UriInterpretation> 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);
}

Expand Down Expand Up @@ -247,7 +247,7 @@ protected void addNewFlex2UI(final ArrayList<UriInterpretation> 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);
Expand All @@ -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);
Expand Down Expand Up @@ -461,19 +461,19 @@ private void grantPermissions() {
@Override
public void hasPermission(List<String> granted, boolean isAll) {
if (isAll) {
BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity.this);
BatteryOptiDominator.requestIgnoreBatteryOpti(MainActivity0.this);
}
}

@Override
public void noPermission(List<String> 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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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()
}
}
Original file line number Diff line number Diff line change
@@ -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() {

}
Original file line number Diff line number Diff line change
@@ -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 <T : ViewModel?> create(modelClass: Class<T>): T {
return MainModel(repo) as T
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.sibyl.HttpFileDominator.mainactivity.repo

/**
* @author HUANGSHI-PC on 2020-03-06 0006.
*/
class MainRepo {
}
Original file line number Diff line number Diff line change
@@ -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<ActivityMainBinding>(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 {

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
109 changes: 58 additions & 51 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,66 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:background="@color/main_activity_background_color"
android:layout_height="match_parent">
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<data>

<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</data>

<include
android:id="@+id/link_layout"
layout="@layout/link_layout" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:background="@color/main_activity_background_color"
android:layout_height="match_parent">

<RelativeLayout
android:id="@+id/containerLayout"
android:layout_marginTop="-6dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">

<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />

<androidx.core.widget.NestedScrollView
android:id="@+id/scrolling_information"
<include
android:id="@+id/link_layout"
layout="@layout/link_layout" />

<RelativeLayout
android:id="@+id/containerLayout"
android:layout_marginTop="-6dp"
android:layout_width="match_parent"
android:layout_height="match_parent">

<com.google.android.flexbox.FlexboxLayout
android:id="@+id/fileNameContainer"
android:animateLayoutChanges="true"
<androidx.core.widget.NestedScrollView
android:id="@+id/scrolling_information"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:flexWrap="wrap"
app:alignItems="flex_start"
app:alignContent="flex_start" />
android:layout_height="match_parent">

<com.google.android.flexbox.FlexboxLayout
android:id="@+id/clipboardContainer"
android:animateLayoutChanges="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:flexWrap="wrap"
app:alignItems="flex_start"
app:alignContent="flex_start" />
<com.google.android.flexbox.FlexboxLayout
android:id="@+id/fileNameContainer"
android:animateLayoutChanges="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:flexWrap="wrap"
app:alignItems="flex_start"
app:alignContent="flex_start" />

<com.google.android.flexbox.FlexboxLayout
android:id="@+id/clipboardContainer"
android:animateLayoutChanges="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:flexWrap="wrap"
app:alignItems="flex_start"
app:alignContent="flex_start" />

</androidx.core.widget.NestedScrollView>
</RelativeLayout>
<!-- </RelativeLayout>-->
</androidx.core.widget.NestedScrollView>
</RelativeLayout>
<!-- </RelativeLayout>-->

</LinearLayout>
</LinearLayout>

<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_gravity="right|bottom"
android:tint="@color/white"
android:src="@drawable/ic_add"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="24dp"
app:layout_behavior="com.sibyl.HttpFileDominator.views.ScrollAwareFABBehavior"
app:backgroundTint="@color/red" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_gravity="right|bottom"
android:tint="@color/white"
android:src="@drawable/ic_add"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_margin="24dp"
app:layout_behavior="com.sibyl.HttpFileDominator.views.ScrollAwareFABBehavior"
app:backgroundTint="@color/red" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

0 comments on commit ee73813

Please sign in to comment.