毕业设计实战项目(16)"/>
Android安卓毕业设计实战项目(16)
Android安卓毕业设计实战项目(16)—宠物商城app【购买,购物车,查看宠物具体信息】–炫酷的UI界面(源码在文末🐕🐕🐕)【可用于安卓毕设或安卓课设作业】
一.项目运行介绍
B站演示视频:
/
B站演示视频:
/
二.具体实现
MainActivity.java
package com.project.petApp;import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;import com.google.android.material.navigation.NavigationView;
import com.project.petApp.menu.favorite.FavoriteFragment;
import com.project.petApp.menu.home.HomeFragment;
import com.project.petApp.menu.profile.ProfileFragment;import java.util.Objects;import nl.joery.animatedbottombar.AnimatedBottomBar;public class MainActivity extends AppCompatActivity {private static final String TAG = MainActivity.class.getSimpleName();private Toolbar toolbar;AnimatedBottomBar animatedBottomBar;FragmentManager fragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setToolbar();initViews(savedInstanceState);initComponentsNavHeader();}private void setToolbar() {toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);Objects.requireNonNull(getSupportActionBar()).setTitle(0);}@SuppressLint("NonConstantResourceId")private void initViews(Bundle savedInstanceState) {/*** Menu Bottom Navigation Drawer* */animatedBottomBar = findViewById(R.id.navigation);if (savedInstanceState == null) {animatedBottomBar.selectTabById(R.id.nav_menu_home, true);fragmentManager = getSupportFragmentManager();HomeFragment homeFragment = new HomeFragment();fragmentManager.beginTransaction().replace(R.id.fragment_container, homeFragment)mit();}animatedBottomBar.setOnTabSelectListener((lastIndex, lastTab, newIndex, newTab) -> {Fragment fragment = null;switch (newTab.getId()) {case R.id.nav_menu_home:fragment = new HomeFragment();break;case R.id.nav_menu_wishlist:fragment = new FavoriteFragment();break;case R.id.nav_menu_signin:fragment = new ProfileFragment();break;}if (fragment != null) {fragmentManager = getSupportFragmentManager();fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment)mit();} else {Log.e(TAG, "Error in creating Fragment");}});/*** Menu Navigation Drawer**/DrawerLayout drawer = findViewById(R.id.drawer_layout);ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawer.addDrawerListener(toggle);toggle.setDrawerIndicatorEnabled(false);toggle.setToolbarNavigationClickListener(view -> drawer.openDrawer(GravityCompat.START));toggle.setHomeAsUpIndicator(R.drawable.ic_drawer);toggle.syncState();}private void initComponentsNavHeader(){NavigationView navigationView = findViewById(R.id.nav_view);
// navigationView.setItemIconTintList(null); //disable tint on each icon to use color icon svgnavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@SuppressLint("NonConstantResourceId")@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.nav_weeds:
// Intent intent1 = new Intent(MainActivity.this, MainActivity.class);
// startActivity(intent1);break;case R.id.nav_insects:
// Pesan("Menu Insects");
// Intent intent2 = new Intent(MainActivity.this, FavoriteFragment.class);
// startActivity(intent2);break;case R.id.nav_diseases:
// Intent intent3 = new Intent(MainActivity.this, ProfileFragment.class);
// startActivity(intent3);
// Pesan("Menu Diseases");break;case R.id.nav_help:
// Pesan("Menu Help");break;}DrawerLayout drawer = findViewById(R.id.drawer_layout);drawer.closeDrawer(GravityCompat.START);return true;}private void Pesan(String pesan) {Toast.makeText(MainActivity.this, pesan, Toast.LENGTH_SHORT).show();}});}@Overridepublic void onBackPressed() {DrawerLayout drawer = findViewById(R.id.drawer_layout);if (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} else {super.onBackPressed();}}
}
这是一个Android应用的MainActivity
代码,它是应用的主要活动,包含了底部导航栏、抽屉式导航栏和多个碎片(Fragments)的管理。以下是代码的详细解释:
package com.project.petApp;import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;import com.google.android.material.navigation.NavigationView;
import com.project.petApp.menu.favorite.FavoriteFragment;
import com.project.petApp.menu.home.HomeFragment;
import com.project.petApp.menu.profile.ProfileFragment;import java.util.Objects;import nl.joery.animatedbottombar.AnimatedBottomBar;public class MainActivity extends AppCompatActivity {private static final String TAG = MainActivity.class.getSimpleName();private Toolbar toolbar;AnimatedBottomBar animatedBottomBar;FragmentManager fragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setToolbar();initViews(savedInstanceState);initComponentsNavHeader();}private void setToolbar() {toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);Objects.requireNonNull(getSupportActionBar()).setTitle(0);}@SuppressLint("NonConstantResourceId")private void initViews(Bundle savedInstanceState) {/*** Menu Bottom Navigation Drawer* */animatedBottomBar = findViewById(R.id.navigation);if (savedInstanceState == null) {animatedBottomBar.selectTabById(R.id.nav_menu_home, true);fragmentManager = getSupportFragmentManager();HomeFragment homeFragment = new HomeFragment();fragmentManager.beginTransaction().replace(R.id.fragment_container, homeFragment)mit();}animatedBottomBar.setOnTabSelectListener((lastIndex, lastTab, newIndex, newTab) -> {Fragment fragment = null;switch (newTab.getId()) {case R.id.nav_menu_home:fragment = new HomeFragment();break;case R.id.nav_menu_wishlist:fragment = new FavoriteFragment();break;case R.id.nav_menu_signin:fragment = new ProfileFragment();break;}if (fragment != null) {fragmentManager = getSupportFragmentManager();fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment)mit();} else {Log.e(TAG, "Error in creating Fragment");}});/*** Menu Navigation Drawer**/DrawerLayout drawer = findViewById(R.id.drawer_layout);ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);drawer.addDrawerListener(toggle);toggle.setDrawerIndicatorEnabled(false);toggle.setToolbarNavigationClickListener(view -> drawer.openDrawer(GravityCompat.START));toggle.setHomeAsUpIndicator(R.drawable.ic_drawer);toggle.syncState();}private void initComponentsNavHeader(){NavigationView navigationView = findViewById(R.id.nav_view);
// navigationView.setItemIconTintList(null); //disable tint on each icon to use color icon svgnavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {@SuppressLint("NonConstantResourceId")@Overridepublic boolean onNavigationItemSelected(@NonNull MenuItem item) {switch (item.getItemId()) {case R.id.nav_weeds:
// Intent intent1 = new Intent(MainActivity.this, MainActivity.class);
// startActivity(intent1);break;case R.id.nav_insects:
// Pesan("Menu Insects");
// Intent intent2 = new Intent(MainActivity.this, FavoriteFragment.class);
// startActivity(intent2);break;case R.id.nav_diseases:
// Intent intent3 = new Intent(MainActivity.this, ProfileFragment.class);
// startActivity(intent3);
// Pesan("Menu Diseases");break;case R.id.nav_help:
// Pesan("Menu Help");break;}DrawerLayout drawer = findViewById(R.id.drawer_layout);drawer.closeDrawer(GravityCompat.START);return true;}private void Pesan(String pesan) {Toast.makeText(MainActivity.this, pesan, Toast.LENGTH_SHORT).show();}});}@Overridepublic void onBackPressed() {DrawerLayout drawer = findViewById(R.id.drawer_layout);if (drawer.isDrawerOpen(GravityCompat.START)) {drawer.closeDrawer(GravityCompat.START);} else {super.onBackPressed();}}
}
这个代码实现了以下功能:
-
设置了一个工具栏(Toolbar),它是应用栏的一部分,用于显示应用的标题和操作按钮。
-
初始化了底部导航栏(
AnimatedBottomBar
),在onCreate
方法中选中了默认选项并加载了相应的碎片(Fragment
)。 -
底部导航栏的选择监听器在选项切换时加载不同的碎片。
-
设置了抽屉式导航栏(
NavigationView
),允许用户通过滑动侧边栏来访问不同的菜单选项。 -
处理了抽屉式导航栏中各菜单选项的点击事件。
-
处理了后退按钮的行为,如果抽屉式导航栏打开,会关闭它,否则会执行默认的后退操作。
这段代码实现了一个具有底部导航栏和抽屉式导航栏的Android应用的主活动。不同的选项卡切换不同的碎片内容,而侧边栏菜单提供了额外的导航选项。
SplashActivity.java
package com.project.petApp;import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.project.petApp.util.TypefaceUtil;public class SplashActivity extends AppCompatActivity {protected Handler mHandler=new Handler();protected TextView tv1,tv2;protected Context mContext= SplashActivity.this;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);tv1=findViewById(R.id.text1);tv2=findViewById(R.id.text2);// FontsUtils.setAppTypeface(mContext);TypefaceUtil tfUtil = new TypefaceUtil(mContext, "fonts/aa.ttf");tfUtil.setTypeface(tv1,false);tfUtil.setTypeface(tv2,false);
// TextView tv = findViewById(R.id.text1);
// Typeface typeface = Typeface.createFromAsset(mContext.getAssets(), "fonts/simkai.ttf"); // mContext为上下文
// tv.setTypeface(typeface );mHandler.postDelayed(new Runnable() {@Overridepublic void run() {startActivity(new Intent(SplashActivity.this, MainActivity.class));}},4000);//2秒钟之后进入闪屏页}
}
以下是一个Android应用的SplashActivity
的代码,它用于在应用启动时显示一个闪屏屏幕,然后在一段时间后切换到主活动。下面是代码的详细解释:
package com.project.petApp;import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;import androidx.appcompat.app.AppCompatActivity;import com.project.petApp.util.TypefaceUtil;public class SplashActivity extends AppCompatActivity {
- 代码开始定义了包名,并导入了Android应用所需的类和库,包括
Context
、Intent
、Handler
和TextView
。还导入了一个自定义的实用工具类TypefaceUtil
。
protected Handler mHandler = new Handler();protected TextView tv1, tv2;protected Context mContext = SplashActivity.this;
- 在这里,声明了实例变量,包括
Handler
、两个TextView
小部件(tv1
和tv2
)以及一个Context
对象(mContext
)。Handler
用于在指定的时间后发布一个延迟操作。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_splash);
- 这是
onCreate
方法,当活动创建时会被调用。它将内容视图设置为在R.layout.activity_splash
中定义的布局。这个布局可能包含了闪屏屏幕的可视元素。
tv1 = findViewById(R.id.text1);tv2 = findViewById(R.id.text2);
- 这些代码行通过它们的ID(
text1
和text2
)在布局中找到两个TextView
元素,并将它们分配给tv1
和tv2
变量。这些TextView
小部件用于在闪屏屏幕上显示文本。
TypefaceUtil tfUtil = new TypefaceUtil(mContext, "fonts/aa.ttf");tfUtil.setTypeface(tv1, false);tfUtil.setTypeface(tv2, false);
- 在这里,创建了一个
TypefaceUtil
对象(tfUtil
),这是一个自定义的实用程序类,用于将自定义字体应用于文本视图。它将来自"fonts/aa.ttf"文件的自定义字体设置给tv1
和tv2
。
mHandler.postDelayed(new Runnable() {@Overridepublic void run() {startActivity(new Intent(SplashActivity.this, MainActivity.class));}}, 4000); // 2秒延迟后开始主活动}
}
- 最后,在
Handler
上发布一个带有4000毫秒(4秒)延迟的Runnable
。在此延迟后,将执行Runnable
中的run
方法。在run
方法内部,创建了一个Intent
以启动MainActivity
,然后调用startActivity
以在显示闪屏屏幕4秒后切换到主活动。
这段代码演示了Android闪屏屏幕活动的典型结构,包括布局设置、字体自定义以及在延迟后切换到主活动。
三.项目源码
–
–
链接:=nljy
提取码:nljy
–
–
更多推荐
Android安卓毕业设计实战项目(16)
发布评论