diff --git a/MyApplication/.idea/misc.xml b/MyApplication/.idea/misc.xml index e16b229..0911bf5 100644 --- a/MyApplication/.idea/misc.xml +++ b/MyApplication/.idea/misc.xml @@ -3,7 +3,13 @@ diff --git a/MyApplication/app/build.gradle b/MyApplication/app/build.gradle index 3fe5308..e7b4f4d 100644 --- a/MyApplication/app/build.gradle +++ b/MyApplication/app/build.gradle @@ -4,10 +4,12 @@ plugins { android { compileSdk 30 - + viewBinding { + enabled = true + } defaultConfig { applicationId "com.example.myapplication" - minSdk 15 + minSdk 25 targetSdk 30 versionCode 1 versionName "1.0" @@ -25,16 +27,23 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + buildFeatures { + viewBinding true + } } dependencies { -// -// implementation 'androidx.appcompat:appcompat:1.2.0' -// implementation 'com.google.android.material:material:1.3.0' + + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.legacy:legacy-support-v4:1.0.0' + implementation 'androidx.navigation:navigation-fragment:2.3.5' + implementation 'androidx.navigation:navigation-ui:2.3.5' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + //androidx project implementation 'com.github.xuexiangjys:XUI:1.1.8' @@ -42,4 +51,5 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'com.google.android.material:material:1.4.0' implementation 'com.github.bumptech.glide:glide:4.12.0' + implementation 'com.jpeng:JPTabBar:1.1.2' } \ No newline at end of file diff --git a/MyApplication/app/src/main/AndroidManifest.xml b/MyApplication/app/src/main/AndroidManifest.xml index dddd32f..62d4e2c 100644 --- a/MyApplication/app/src/main/AndroidManifest.xml +++ b/MyApplication/app/src/main/AndroidManifest.xml @@ -3,22 +3,24 @@ package="com.example.myapplication"> - - + android:theme="@style/AppTheme"> + + + \ No newline at end of file diff --git a/MyApplication/app/src/main/java/com/example/myapplication/MainActivity.java b/MyApplication/app/src/main/java/com/example/myapplication/MainActivity.java deleted file mode 100644 index e640aaf..0000000 --- a/MyApplication/app/src/main/java/com/example/myapplication/MainActivity.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.myapplication; - -import androidx.appcompat.app.AppCompatActivity; - -import android.os.Bundle; - -public class MainActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - } -} \ No newline at end of file diff --git a/MyApplication/app/src/main/java/com/example/myapplication/MyApplication.java b/MyApplication/app/src/main/java/com/example/myapplication/MyApplication.java new file mode 100644 index 0000000..9dcf3c6 --- /dev/null +++ b/MyApplication/app/src/main/java/com/example/myapplication/MyApplication.java @@ -0,0 +1,16 @@ +package com.example.myapplication; + +import android.app.Application; + +import com.xuexiang.xui.XUI; + + +public class MyApplication extends Application { + @Override + public void onCreate() { + super.onCreate(); + XUI.init(this); + XUI.debug(true); + } + +} diff --git a/MyApplication/app/src/main/java/com/example/myapplication/activity/LauncherActivity.java b/MyApplication/app/src/main/java/com/example/myapplication/activity/LauncherActivity.java new file mode 100644 index 0000000..ebed9fa --- /dev/null +++ b/MyApplication/app/src/main/java/com/example/myapplication/activity/LauncherActivity.java @@ -0,0 +1,81 @@ +package com.example.myapplication.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; + +import com.example.myapplication.R; +import com.example.myapplication.databinding.ActivityLauncherBinding; +import com.xuexiang.xui.widget.banner.anim.select.ZoomInEnter; +import com.xuexiang.xui.widget.banner.transform.RotateDownTransformer; +import com.xuexiang.xui.widget.banner.widget.banner.SimpleGuideBanner; + +import java.util.ArrayList; +import java.util.List; + +public class LauncherActivity extends AppCompatActivity { + private SimpleGuideBanner mSimpleGuideBanner; + + private ActivityLauncherBinding binding; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityLauncherBinding.inflate(this.getLayoutInflater()); + setContentView(binding.getRoot()); + mSimpleGuideBanner = binding.sgb; + showSimpleGuideBanner(); + startThread(); + } + + public void startThread(){ + Thread myThread = new Thread() {//创建子线程 + @Override + public void run() { + try { + sleep(2000);//使程序休眠一秒 + pageJump(); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + myThread.start();//启动线程 + } + + + private void showSimpleGuideBanner() { + mSimpleGuideBanner + .setIndicatorWidth(6) + .setIndicatorHeight(6) + .setIndicatorGap(12) + .setIndicatorCornerRadius(3.5f) + .setSelectAnimClass(ZoomInEnter.class)//设置显示器选中动画 + .setTransformerClass(RotateDownTransformer.class)//页面滚动效果 + .barPadding(0, 10, 0, 10) + .setSource(getUserGuides())//设置图片资源 + .startScroll(); + + //点击跳过或者立即体验的监听 + mSimpleGuideBanner.setOnJumpClickListener(new SimpleGuideBanner.OnJumpClickListener() { + @Override + public void onJumpClick() { + pageJump(); + } + }); + } + + public void pageJump(){ + //跳转到 MainActivity + Intent intent = new Intent(LauncherActivity.this, MainActivity.class); + startActivity(intent); + finish();//关闭当前活动 + } + + + private static List getUserGuides() { + List list = new ArrayList<>(); + list.add(R.drawable.page_launcher); + return list; + } +} \ No newline at end of file diff --git a/MyApplication/app/src/main/java/com/example/myapplication/activity/MainActivity.java b/MyApplication/app/src/main/java/com/example/myapplication/activity/MainActivity.java new file mode 100644 index 0000000..b292d7a --- /dev/null +++ b/MyApplication/app/src/main/java/com/example/myapplication/activity/MainActivity.java @@ -0,0 +1,41 @@ +package com.example.myapplication.activity; + +import androidx.appcompat.app.AppCompatActivity; + +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +import com.example.myapplication.R; +import com.example.myapplication.databinding.ActivityMainBinding; +import com.google.android.material.tabs.TabLayout; + +import com.jpeng.jptabbar.anno.NorIcons; +import com.jpeng.jptabbar.anno.SeleIcons; +import com.jpeng.jptabbar.anno.Titles; +import com.xuexiang.xui.utils.WidgetUtils; +import com.xuexiang.xui.widget.button.ButtonView; + + +public class MainActivity extends AppCompatActivity { + + + private ActivityMainBinding binding; + @Titles + private static final String[] mTitles = {"首页","踪迹","定位","我的"}; + + @SeleIcons + private static final int[] mSeleIcons = {R.mipmap.tab_home_selected,R.mipmap.tab_trace_selected,R.mipmap.tab_position_selected,R.mipmap.tab_mine_selected}; + + @NorIcons + private static final int[] mNormalIcons = {R.mipmap.tab_home_normal,R.mipmap.tab_trace_normal,R.mipmap.tab_position_normal,R.mipmap.tab_mine_normal}; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityMainBinding.inflate(this.getLayoutInflater()); + setContentView(binding.getRoot()); + } + + +} \ No newline at end of file diff --git a/MyApplication/app/src/main/java/com/example/myapplication/fragment/HomeFragment.java b/MyApplication/app/src/main/java/com/example/myapplication/fragment/HomeFragment.java new file mode 100644 index 0000000..3afe72a --- /dev/null +++ b/MyApplication/app/src/main/java/com/example/myapplication/fragment/HomeFragment.java @@ -0,0 +1,66 @@ +package com.example.myapplication.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.myapplication.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link HomeFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class HomeFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + public HomeFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment HomeFragment. + */ + // TODO: Rename and change types and number of parameters + public static HomeFragment newInstance(String param1, String param2) { + HomeFragment fragment = new HomeFragment(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_home, container, false); + } +} \ No newline at end of file diff --git a/MyApplication/app/src/main/res/drawable/page_launcher.png b/MyApplication/app/src/main/res/drawable/page_launcher.png new file mode 100644 index 0000000..56a459d Binary files /dev/null and b/MyApplication/app/src/main/res/drawable/page_launcher.png differ diff --git a/MyApplication/app/src/main/res/layout/activity_launcher.xml b/MyApplication/app/src/main/res/layout/activity_launcher.xml new file mode 100644 index 0000000..226568a --- /dev/null +++ b/MyApplication/app/src/main/res/layout/activity_launcher.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/MyApplication/app/src/main/res/layout/activity_main.xml b/MyApplication/app/src/main/res/layout/activity_main.xml index 4fc2444..d830e19 100644 --- a/MyApplication/app/src/main/res/layout/activity_main.xml +++ b/MyApplication/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,29 @@ - + android:orientation="vertical"> - + - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/layout/fragment_home.xml b/MyApplication/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 0000000..1f8d3fa --- /dev/null +++ b/MyApplication/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_normal.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_normal.png new file mode 100644 index 0000000..e971b91 Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_normal.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_selected.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_selected.png new file mode 100644 index 0000000..fbce314 Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_home_selected.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_normal.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_normal.png new file mode 100644 index 0000000..36e20a7 Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_normal.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_selected.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_selected.png new file mode 100644 index 0000000..c1e09be Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_mine_selected.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_normal.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_normal.png new file mode 100644 index 0000000..42bfc42 Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_normal.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_selected.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_selected.png new file mode 100644 index 0000000..9b3b793 Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_position_selected.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_normal.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_normal.png new file mode 100644 index 0000000..d5ee3fd Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_normal.png differ diff --git a/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_selected.png b/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_selected.png new file mode 100644 index 0000000..88e5f9b Binary files /dev/null and b/MyApplication/app/src/main/res/mipmap-hdpi/tab_trace_selected.png differ diff --git a/MyApplication/app/src/main/res/navigation/nav_graph.xml b/MyApplication/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 0000000..1e8b0fa --- /dev/null +++ b/MyApplication/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values-land/dimens.xml b/MyApplication/app/src/main/res/values-land/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/MyApplication/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values-w1240dp/dimens.xml b/MyApplication/app/src/main/res/values-w1240dp/dimens.xml new file mode 100644 index 0000000..d73f4a3 --- /dev/null +++ b/MyApplication/app/src/main/res/values-w1240dp/dimens.xml @@ -0,0 +1,3 @@ + + 200dp + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values-w600dp/dimens.xml b/MyApplication/app/src/main/res/values-w600dp/dimens.xml new file mode 100644 index 0000000..22d7f00 --- /dev/null +++ b/MyApplication/app/src/main/res/values-w600dp/dimens.xml @@ -0,0 +1,3 @@ + + 48dp + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values/colors.xml b/MyApplication/app/src/main/res/values/colors.xml index f8c6127..955382e 100644 --- a/MyApplication/app/src/main/res/values/colors.xml +++ b/MyApplication/app/src/main/res/values/colors.xml @@ -7,4 +7,5 @@ #FF018786 #FF000000 #FFFFFFFF + #00ff00 \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values/dimens.xml b/MyApplication/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..125df87 --- /dev/null +++ b/MyApplication/app/src/main/res/values/dimens.xml @@ -0,0 +1,3 @@ + + 16dp + \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values/strings.xml b/MyApplication/app/src/main/res/values/strings.xml index 3de1a39..5c4d088 100644 --- a/MyApplication/app/src/main/res/values/strings.xml +++ b/MyApplication/app/src/main/res/values/strings.xml @@ -1,3 +1,14 @@ My Application + + Hello blank fragment + MainActivity + + First Fragment + Second Fragment + Next + Previous + + Hello first fragment + Hello second fragment. Arg: %1$s \ No newline at end of file diff --git a/MyApplication/app/src/main/res/values/themes.xml b/MyApplication/app/src/main/res/values/themes.xml index 4f9b632..3bf33bc 100644 --- a/MyApplication/app/src/main/res/values/themes.xml +++ b/MyApplication/app/src/main/res/values/themes.xml @@ -1,8 +1,18 @@ + + + + +