diff --git a/OneToOne/.gitignore b/OneToOne/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/OneToOne/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/OneToOne/build.gradle b/OneToOne/build.gradle new file mode 100644 index 000000000..12e2aebd0 --- /dev/null +++ b/OneToOne/build.gradle @@ -0,0 +1,91 @@ +apply plugin: 'com.android.application' +//apply plugin: 'com.android.library' +apply plugin: 'img-optimizer' +apply plugin: 'com.alibaba.arouter' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion + + + defaultConfig { + applicationId "com.shayu.onetoone" + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode rootProject.ext.android.versionCode + versionName rootProject.ext.android.versionName + manifestPlaceholders = rootProject.ext.manifestPlaceholders + ndk { + abiFilters "armeabi-v7a", "arm64-v8a" + } + } + aaptOptions { + cruncherEnabled = false + useNewCruncher = false + } + signingConfigs { + release { + keyAlias 'phonelive' + keyPassword 'phonelive' + storeFile file('../hdl.jks') + storePassword 'phonelive' + } + //陌陌本地配置需要 + config {//TODO BEAUTYSDK 这里需要配置keystore相关信息 + keyAlias 'phonelive' + keyPassword 'phonelive' + storeFile file('../hdl.jks')//keystore的存放路径 + storePassword 'phonelive' + v2SigningEnabled true // android 5.0-8.0,必须用V2,否则会有安全问题 + v1SigningEnabled true + } + } + buildTypes { + release { + minifyEnabled false + shrinkResources false + zipAlignEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + debug { + minifyEnabled false + shrinkResources false + zipAlignEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} +repositories { + flatDir { + dirs 'libs', '../libs' + } +} +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation rootProject.ext.dependencies["appcompat-androidx"] + implementation rootProject.ext.dependencies["recyclerview-androidx"] + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + //common + api project(path: ':common') + api project(path:':FaceUnity')//新娱美颜 + + api project(path:':TabLayout') + api project(path:':ViewPager2Delegate') + //implementation 'com.github.angcyo.DslTablayout:TabLayout:3.5.5' + //可选 + //implementation 'com.github.angcyo.DslTablayout:ViewPager2Delegate:3.5.5' + + //ExoPlayer,腾讯的播放器不支持无缝切换 + implementation 'com.google.android.exoplayer:exoplayer:2.18.5' + implementation 'com.google.android.exoplayer:exoplayer-core:2.18.5@aar' + +} diff --git a/OneToOne/consumer-rules.pro b/OneToOne/consumer-rules.pro new file mode 100644 index 000000000..e69de29bb diff --git a/OneToOne/proguard-rules.pro b/OneToOne/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/OneToOne/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/OneToOne/src/androidTest/java/com/shayu/onetoone/ExampleInstrumentedTest.java b/OneToOne/src/androidTest/java/com/shayu/onetoone/ExampleInstrumentedTest.java new file mode 100644 index 000000000..5c42b5c1e --- /dev/null +++ b/OneToOne/src/androidTest/java/com/shayu/onetoone/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.shayu.onetoone; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.shayu.onetoone.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml new file mode 100644 index 000000000..98b9c583b --- /dev/null +++ b/OneToOne/src/main/AndroidManifest.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java b/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java new file mode 100644 index 000000000..4d4843585 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java @@ -0,0 +1,10 @@ +package com.shayu.onetoone; + +import androidx.multidex.MultiDexApplication; + +public class AppContext extends MultiDexApplication { + @Override + public void onCreate() { + super.onCreate(); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/LauncherActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/LauncherActivity.java new file mode 100644 index 000000000..e2420f406 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/LauncherActivity.java @@ -0,0 +1,18 @@ +package com.shayu.onetoone.activitys; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; + +import com.shayu.onetoone.R; + +public class LauncherActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_launcher); + startActivity(new Intent(this, MainActivity.class)); + } +} \ No newline at end of file diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/MainActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/MainActivity.java new file mode 100644 index 000000000..86b25d080 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/MainActivity.java @@ -0,0 +1,57 @@ +package com.shayu.onetoone.activitys; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import android.os.Bundle; + +import com.angcyo.tablayout.DslTabLayout; +import com.angcyo.tablayout.delegate2.ViewPager2Delegate; +import com.shayu.onetoone.R; +import com.shayu.onetoone.activitys.fragments.BaseFragment; +import com.shayu.onetoone.activitys.fragments.DynamicFragment; +import com.shayu.onetoone.activitys.fragments.FriendsFragment; +import com.shayu.onetoone.activitys.fragments.MessageFragment; +import com.shayu.onetoone.activitys.fragments.MyFragment; + +import java.util.ArrayList; +import java.util.List; + +public class MainActivity extends AppCompatActivity { + List fragments = new ArrayList<>(); + private ViewPager2 viewPager; + private DslTabLayout dslTabLayout; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + fragments.add(new FriendsFragment()); + fragments.add(new DynamicFragment()); + fragments.add(new MessageFragment()); + fragments.add(new MyFragment()); + + viewPager = findViewById(R.id.viewPager); + dslTabLayout = findViewById(R.id.dslTabLayout); + + viewPager.setAdapter(new FragmentStateAdapter(this) { + @NonNull + @Override + public Fragment createFragment(int position) { + return fragments.get(position); + } + + @Override + public int getItemCount() { + return fragments.size(); + } + }); + + ViewPager2Delegate.Companion.install(viewPager, dslTabLayout, false); + + } +} \ No newline at end of file diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/BaseFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/BaseFragment.java new file mode 100644 index 000000000..f6b121d9c --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/BaseFragment.java @@ -0,0 +1,7 @@ +package com.shayu.onetoone.activitys.fragments; + +import androidx.fragment.app.Fragment; + +public class BaseFragment extends Fragment { + +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/DynamicFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/DynamicFragment.java new file mode 100644 index 000000000..803deb7f6 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/DynamicFragment.java @@ -0,0 +1,20 @@ +package com.shayu.onetoone.activitys.fragments; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.shayu.onetoone.R; + +public class DynamicFragment extends BaseFragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_dynamic, container, false); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/FriendsFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/FriendsFragment.java new file mode 100644 index 000000000..5dffc6d83 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/FriendsFragment.java @@ -0,0 +1,20 @@ +package com.shayu.onetoone.activitys.fragments; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.shayu.onetoone.R; + +public class FriendsFragment extends BaseFragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_friends, container, false); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MessageFragment.java new file mode 100644 index 000000000..63bd90fec --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MessageFragment.java @@ -0,0 +1,20 @@ +package com.shayu.onetoone.activitys.fragments; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.shayu.onetoone.R; + +public class MessageFragment extends BaseFragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_msg, container, false); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MyFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MyFragment.java new file mode 100644 index 000000000..f8c0e3944 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activitys/fragments/MyFragment.java @@ -0,0 +1,20 @@ +package com.shayu.onetoone.activitys.fragments; + + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.shayu.onetoone.R; + +public class MyFragment extends BaseFragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_my, container, false); + } +} diff --git a/OneToOne/src/main/res/drawable/tab_dynamic.xml b/OneToOne/src/main/res/drawable/tab_dynamic.xml new file mode 100644 index 000000000..8afe037a2 --- /dev/null +++ b/OneToOne/src/main/res/drawable/tab_dynamic.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/tab_friends.xml b/OneToOne/src/main/res/drawable/tab_friends.xml new file mode 100644 index 000000000..619280960 --- /dev/null +++ b/OneToOne/src/main/res/drawable/tab_friends.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/tab_msg.xml b/OneToOne/src/main/res/drawable/tab_msg.xml new file mode 100644 index 000000000..a224bf5c2 --- /dev/null +++ b/OneToOne/src/main/res/drawable/tab_msg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/drawable/tab_my.xml b/OneToOne/src/main/res/drawable/tab_my.xml new file mode 100644 index 000000000..85ae03694 --- /dev/null +++ b/OneToOne/src/main/res/drawable/tab_my.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/activity_launcher.xml b/OneToOne/src/main/res/layout/activity_launcher.xml new file mode 100644 index 000000000..2c09d16ba --- /dev/null +++ b/OneToOne/src/main/res/layout/activity_launcher.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/activity_main.xml b/OneToOne/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..a9dfe788f --- /dev/null +++ b/OneToOne/src/main/res/layout/activity_main.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/res/layout/fragment_dynamic.xml b/OneToOne/src/main/res/layout/fragment_dynamic.xml new file mode 100644 index 000000000..a60ab8854 --- /dev/null +++ b/OneToOne/src/main/res/layout/fragment_dynamic.xml @@ -0,0 +1,15 @@ + + +