diff --git a/Final_Project_app/.gitignore b/Final_Project_app/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/Final_Project_app/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Final_Project_app/.idea/.gitignore b/Final_Project_app/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Final_Project_app/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Final_Project_app/.idea/compiler.xml b/Final_Project_app/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/Final_Project_app/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Final_Project_app/.idea/encodings.xml b/Final_Project_app/.idea/encodings.xml new file mode 100644 index 0000000..c2bae49 --- /dev/null +++ b/Final_Project_app/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Final_Project_app/.idea/gradle.xml b/Final_Project_app/.idea/gradle.xml new file mode 100644 index 0000000..ae388c2 --- /dev/null +++ b/Final_Project_app/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml b/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8d66637 --- /dev/null +++ b/Final_Project_app/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/Final_Project_app/.idea/misc.xml b/Final_Project_app/.idea/misc.xml new file mode 100644 index 0000000..31a6708 --- /dev/null +++ b/Final_Project_app/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/.gitignore b/Final_Project_app/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/Final_Project_app/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Final_Project_app/app/build.gradle.kts b/Final_Project_app/app/build.gradle.kts new file mode 100644 index 0000000..7f8c6ca --- /dev/null +++ b/Final_Project_app/app/build.gradle.kts @@ -0,0 +1,48 @@ +plugins { + id("com.android.application") +} + +android { + namespace = "com.example.final_project_app" + compileSdk = 33 + + defaultConfig { + applicationId = "com.example.final_project_app" + minSdk = 24 + targetSdk = 33 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +dependencies { + + //noinspection GradleCompatible,GradleCompatible + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("com.google.android.material:material:1.8.0") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + implementation(files("libs\\mysql-connector-java-5.1.49.jar")) +//轮播图依赖,使用三方开源库youth5201314 + implementation("io.github.youth5201314:banner:2.2.2") +//视频播放器依赖 + implementation("com.android.support:recyclerview-v7:33.0.0") + //implementation("com.github.bumptech.glide:glide:4.8.0") + + +} \ No newline at end of file diff --git a/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar b/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar new file mode 100644 index 0000000..d3c8b41 Binary files /dev/null and b/Final_Project_app/app/libs/mysql-connector-java-5.1.49.jar differ diff --git a/Final_Project_app/app/proguard-rules.pro b/Final_Project_app/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/Final_Project_app/app/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/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java b/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java new file mode 100644 index 0000000..b957427 --- /dev/null +++ b/Final_Project_app/app/src/androidTest/java/com/example/final_project_app/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.final_project_app; + +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.example.final_project_app", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/AndroidManifest.xml b/Final_Project_app/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2ae1732 --- /dev/null +++ b/Final_Project_app/app/src/main/AndroidManifest.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java new file mode 100644 index 0000000..57b6729 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/AboutUsActivity.java @@ -0,0 +1,37 @@ +package com.example.final_project_app; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.Button; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +public class AboutUsActivity extends AppCompatActivity { + private Button btn_back; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_about_us); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + /* btn_back = findViewById(R.id.btn_back); + btn_back.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + ft.replace(R.id.fg_main,new FourFragment()); + ft.addToBackStack(null); + + ft.commit(); + Intent intent = new Intent(AboutUsActivity.this, FourFragment.class); + startActivity(intent); + } + });*/ + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java new file mode 100644 index 0000000..80b87aa --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/ChexBoxFragment.java @@ -0,0 +1,155 @@ +package com.example.final_project_app; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link ChexBoxFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class ChexBoxFragment extends Fragment { + //成员变量 + private TextView question_stem;//题干文本框控件,就是选中的控件显示 + private CheckBox[] cb =new CheckBox[5]; + private Question question;//题目对象就是标题,单选多选,正确下标 + private int result;//正确为1 错误为0 未答题为-1 + private View view; + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + Log.e("复选onCreateView","复选onCreateView执行了"); + view=inflater.inflate(R.layout.fragment_chex_box, container, false); + return view; + } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + Log.e("复选onViewCreated","复选onViewCreated执行了"); + //初始化控件 + initView(view); + //更新题目 + nextQuestion(question); + } + //获取题目 + public void setQuestion(Question question){ + this.question=question; + } + + public void clearChoice(){ + //清除选择 + for (int i = 0; i < cb.length; i++) { + cb[i].setChecked(false); + } + } + //初始化控件 + public void initView(final View view){ + Log.e("复选initView","复选initView执行了"); + //获取题干 + question_stem=view.findViewById(R.id.question_item2); + //单选控件 + cb[0]=view.findViewById(R.id.boxs1); + cb[1]=view.findViewById(R.id.boxs2); + cb[2]=view.findViewById(R.id.boxs3); + cb[3]=view.findViewById(R.id.boxs4); + cb[4]=view.findViewById(R.id.boxs5); + } + //更新题目 + public void nextQuestion(Question question){ + Log.e("复选nextQuestion","nextQuestion执行了"); + //设置题干 + Log.e("a",question.getQuestionStem()); + question_stem.setText(question.getQuestionStem()); + //设置选项 + for (int i=0;i goodsList = new ArrayList<>(); + + //定义轮播图片 + private final ArrayList banners; + + //定义文物列表 + private List CuList = new ArrayList(); + //定义布局 + private RecyclerView recyclerView; + //定义文物适配器 + CultrualAdapter adapter; + //轮播 + public FirstFragment() { + //本地图片 + banners = new ArrayList<>(); + banners.add(new bannerBean(R.drawable.banner1)); + banners.add(new bannerBean(R.drawable.banner2)); + banners.add(new bannerBean(R.drawable.banner3)); + banners.add(new bannerBean(R.drawable.banner4)); + banners.add(new bannerBean(R.drawable.banner5)); + banners.add(new bannerBean(R.drawable.banner6)); + } + // + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View inflate = inflater.inflate(R.layout.fg_first, container, false); // 通过inflater获取页面 + +// initCrlists(); + //获取recyclerview水平可滑动列表 + recyclerView = inflate.findViewById(R.id.recycler_view); + adapter = new CultrualAdapter(); + recyclerView.setAdapter(adapter); + goodsData = new GoodsData(inflate.getContext()); + goodsList = goodsData.getGoodsList(); + + LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); + //设置间隔线 + DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL); + recyclerView.addItemDecoration(dividerItemDecoration); + layoutManager.setOrientation(recyclerView.VERTICAL);//水平/垂直显示 + recyclerView.setLayoutManager(layoutManager); + + + GoodsAdapter adapter = new GoodsAdapter(goodsList); + recyclerView.setAdapter(adapter); + //获取banner + Banner banner = inflate.findViewById(R.id.banner); + //设置banner + //添加生命周期,回调这个方法 + banner.addBannerLifecycleObserver(this) + //为banner设置适配器,并将数据传递进去 + .setAdapter(new BannerViewAdapter(banners, this)) + //添加指示器 + .setIndicator(new CircleIndicator(getContext())); + return inflate; + //返回inflate对象 + } + //菜单按钮点击事件 + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + // //菜单栏点击跳转事件 + /* menu_bnt1 = getActivity().findViewById(R.id.btn1); + menu_bnt1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), waitActivity.class); + startActivity(intent); + } + }); + menu_btn2= getActivity().findViewById(R.id.btn2); + menu_btn2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), waitActivity2.class); + startActivity(intent); + } + }); + menu_btn3=getActivity().findViewById(R.id.btn3); + menu_btn3.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), waitActivity3.class); + startActivity(intent); + } + }); + menu_btn4 = getActivity().findViewById(R.id.btn4); + menu_btn4.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), waitActivity5.class); + startActivity(intent); + } + });*/ + } +//文物列表通过add将数据加入列表中 +// private void initCrlists() { +// CultrualData list1 = new CultrualData("商.铜神树枝头花蕾及立鸟", R.drawable.cr_list1); +// CuList.add(list1); +// CultrualData list2 = new CultrualData("商晚.青铜器妇好鹄尊", R.drawable.cr_list2); +// CuList.add(list2); +// CultrualData list3 = new CultrualData("商晚.青铜器牛方鼎", R.drawable.cr_list3); +// CuList.add(list3); +// CultrualData list4 = new CultrualData("西周.青铜器凤纹尊", R.drawable.cr_list4); +// CuList.add(list4); +// CultrualData list5 = new CultrualData("五代.青瓷提梁倒灌壶", R.drawable.cr_list5); +// CuList.add(list5); +// CultrualData list6 = new CultrualData("西周.鸟纹觥", R.drawable.cr_list6); +// CuList.add(list6); +// CultrualData list7 = new CultrualData("三星堆", R.drawable.cr_list7); +// CuList.add(list7); +// CultrualData list8 = new CultrualData("商代.鹄卣", R.drawable.cr_list8); +// CuList.add(list8); +// CultrualData list9 = new CultrualData("兽面纹铜钺", R.drawable.cr_list9); +// CuList.add(list9); +// } + + class CultrualAdapter extends RecyclerView.Adapter { + @NonNull + @Override + public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = View.inflate(getContext(), R.layout.cltrua_list, null); + MyViewHoder myViewHoder = new MyViewHoder(view); + // 将View对象传入ViewHolder构造函数创建ViewHolder对象并返回 + return myViewHoder; + } + + // onBindViewHolder方法,用于绑定数据到ViewHolder对象 + // 参数holder表示要绑定的ViewHolder对象,position表示当前项的位置 + @Override + public void onBindViewHolder(@NonNull MyViewHoder holder, @SuppressLint("RecyclerView") int position) { + // 从数据列表中获取当前位置的数据 + CultrualData Cul = CuList.get(position); + //第二步 + // 将数据设置到ViewHolder对象的textView中 + // holder.textView.setText(fruit.getName());//fruit.getImageId() + holder.imageview.setBackgroundResource(Cul.getImageId()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Toast.makeText(getContext(), + ""+CuList.get(position), + Toast.LENGTH_LONG).show(); + } + }); + + } + + @Override + public int getItemCount() { + return CuList.size(); + } + } + class MyViewHoder extends RecyclerView.ViewHolder { + TextView textView; + ImageView imageview; + public MyViewHoder(@NonNull View itemView) { + super(itemView); + textView = itemView.findViewById(R.id.fruit_name); + imageview = itemView.findViewById(R.id.fruit_image); + } + } +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java new file mode 100644 index 0000000..b7385a3 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/FourFragment.java @@ -0,0 +1,92 @@ +package com.example.final_project_app.Fragment; + +import android.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.example.final_project_app.AboutUsActivity; +import com.example.final_project_app.Helpctivity; +import com.example.final_project_app.R; +import com.example.final_project_app.login; + +public class FourFragment extends FirstFragment { + private RelativeLayout quite,aboutus,help; + private TextView username,userpwd; + SharedPreferences sp1; + + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fg_four,container,false); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + //获取用户名和密码控件 + username = getActivity().findViewById(R.id.username); + userpwd = getActivity().findViewById(R.id.userpwd); + + //获取退出控件 + quite = getActivity().findViewById(R.id.re_quite); + //退出点击事件 + quite.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle("提示"); + builder.setMessage("是否确定退出"); + builder.setIcon(R.drawable.back_home0); + //确定 + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + Intent intent = new Intent(getActivity(), login.class); + startActivity(intent); + } + }); + //取消 + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + dialogInterface.dismiss(); //关闭提示框 + } + }); + //生成提示框并显示 + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + } + }); + //关于我们点击事件 + aboutus = getActivity().findViewById(R.id.re_aboutus); + aboutus.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), AboutUsActivity.class); + startActivity(intent); + } + }); + //帮助与反馈 + help = getActivity().findViewById(R.id.re_help); + help.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), Helpctivity.class); + startActivity(intent); + } + }); + + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java new file mode 100644 index 0000000..308ccd6 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/ThreeFragment.java @@ -0,0 +1,99 @@ +package com.example.final_project_app.Fragment; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.final_project_app.R; +import com.example.final_project_app.adpter.NoteRecyAdapter; +import com.example.final_project_app.QuestionActivity; +import com.example.final_project_app.db.NoteBook; +import com.example.final_project_app.db.NoteData; +import com.example.final_project_app.sql.AddNoteActivity; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +public class ThreeFragment extends FirstFragment { + private Button btn_add,btn_awser; + + private NoteBook nb; + private RecyclerView recy; + private List datas; + + private NoteRecyAdapter mAdapter; + @SuppressLint("MissingInflatedId") + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fg_three, container, false); + return view; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + //初始化数据 + initdata(); + //获取控件 + recy = getActivity().findViewById(R.id.recy); + mAdapter = new com.example.final_project_app.adpter.NoteRecyAdapter(datas,getContext()); + LinearLayoutManager lm = new LinearLayoutManager(getContext()); + recy.setAdapter(mAdapter); + recy.setLayoutManager(lm); + //添加按钮 + btn_add = getActivity().findViewById(R.id.btn_add); + btn_add.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), AddNoteActivity.class); + startActivity(intent); + } + }); + btn_awser = getActivity().findViewById(R.id.btn_awser); + btn_awser.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(getActivity(), QuestionActivity.class); + startActivity(intent); + } + }); + } + + @Override + public void onResume() { + super.onResume(); + refreshData(); + mAdapter.refresh(datas); + } + private void refreshData() { + datas = getDataFromSQL(); + + } + + private void initdata() { + datas = new ArrayList(); + nb = new NoteBook(getContext()); + datas = getDataFromSQL(); + } + private List getDataFromSQL() { + return nb.query(); + } + private String getSystemCurrentTime() { + SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss"); + Date datetime = new Date(); + return sdf.format(datetime); + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java new file mode 100644 index 0000000..82eb3f3 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Fragment/TwoFragment.java @@ -0,0 +1,62 @@ +package com.example.final_project_app.Fragment; + +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 androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; + +import com.example.final_project_app.R; +import com.example.final_project_app.adpter.MovieAdapter; +import com.example.final_project_app.db.Movie; + +import java.util.ArrayList; +import java.util.List; + +public class TwoFragment extends FirstFragment{ + RecyclerView recyclerView; + List movieList; + MovieAdapter movieAdapter; + private static final String TAG="MovieActivity"; + + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fg_two,container,false); + return view; + } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + recyclerView = getActivity().findViewById(R.id.fg_tworecyclerview); + initData(); + } + private void initData() { + //建立动态数组存放数据 + movieList = new ArrayList<>(); + //获取网络视频 + /* Movie firstmovie = new Movie("kkkkk1", "http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4"); + movieList.add(firstmovie); + /* //获取本工程中的视频*/ + Movie one=new Movie("形式如何?适合自己才是王道","android.resource://"+getActivity().getPackageName()+"/"+R.raw.one); + movieList.add(one); + Movie two=new Movie("考研or考公?如何抉择","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.two); + movieList.add(two); + Movie three=new Movie("考研流程一览","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.three); + movieList.add(three); + Movie four=new Movie("NEW1","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.kaogongone); + movieList.add(four); + Movie five=new Movie("NEW2","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.one); + movieList.add(five); + Movie six=new Movie("NEW3","android.resource://"+ getActivity().getPackageName()+"/"+R.raw.two); + movieList.add(six); + //将视频显示在控件上 + movieAdapter = new MovieAdapter(movieList); + StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL); + recyclerView.setLayoutManager(layoutManager); + recyclerView.setAdapter(movieAdapter); + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java new file mode 100644 index 0000000..eb3a7c1 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/Goods.java @@ -0,0 +1,60 @@ +package com.example.final_project_app.Goods; + +public class Goods { + private int goodsId; + private String goodsName; + private String goodsNotice; +// private int goodsPrice; + private int goodsImg; + + public Goods() { + + } + + public Goods(String goodsName, String goodsNotice, int goodPrice, int goodsImg) { + this.goodsName = goodsName; + this.goodsNotice = goodsNotice; + // this.goodsPrice = goodPrice; + this.goodsImg = goodsImg; + } + + public int getGoodsId() { + return goodsId; + } + + public void setGoodsId(int goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getGoodsNotice() { + return goodsNotice; + } + + public void setGoodsNotice(String goodsNotice) { + this.goodsNotice = goodsNotice; + } + +// public int getGoodPrice() { +// return goodsPrice; +// } + +// public void setGoodPrice(int goodPrice) { +// this.goodsPrice = goodPrice; +// } + + public int getGoodsImg() { + return goodsImg; + } + + public void setGoodsImg(int goodsImg) { + this.goodsImg = goodsImg; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java new file mode 100644 index 0000000..6ee1d69 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsActivity.java @@ -0,0 +1,55 @@ +package com.example.final_project_app.Goods; + +import android.content.Intent; +import android.os.Bundle; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.final_project_app.R; + +import java.util.ArrayList; +import java.util.List; + +public class GoodsActivity extends AppCompatActivity { + private ImageView imageView; + private TextView goodsPrice,goodsName,goodsNotice; + + private List goodsList = new ArrayList<>(); + private Goods goods; + private Button gom; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_goods); + + imageView = findViewById(R.id.img); + goodsName = findViewById(R.id.name); + // goodsPrice = findViewById(R.id.price); + goodsNotice = findViewById(R.id.notice); + + Intent intent = getIntent(); + int goodsId = intent.getIntExtra("goodsId",0); + + GoodsData goodsData = new GoodsData(GoodsActivity.this); + goodsList = goodsData.getGoodsList(); + goods = goodsList.get(goodsId); + + imageView.setImageResource(goods.getGoodsImg()); + goodsName.setText(goods.getGoodsName()); + // goodsPrice.setText("¥"+String.valueOf(goods.getGoodPrice())+"元"); + goodsNotice.setText(goods.getGoodsNotice()); + +// gom = (Button) findViewById(R.id.gm); +// gom.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View view) { +// Intent intent = new Intent(GoodsActivity.this, plActivity.class); +// startActivity(intent); +// } +// }); + } +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java new file mode 100644 index 0000000..cc59efa --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsAdapter.java @@ -0,0 +1,72 @@ +package com.example.final_project_app.Goods; + +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.final_project_app.R; + +import java.util.List; + +public class GoodsAdapter extends RecyclerView.Adapter{ + private List mGoodsList; + + public GoodsAdapter(List mGoodsList) { + this.mGoodsList = mGoodsList; + } + + @NonNull + @Override + public ViewHolderR onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.goods_item,parent,false); + + final ViewHolderR holderR = new ViewHolderR(view); + + /*RecyclerView子项点击事件:携带商品id跳转至商品详情页*/ + holderR.goodsView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(view.getContext(),GoodsActivity.class); + intent.putExtra("goodsId",holderR.getAdapterPosition()); + view.getContext().startActivity(intent); + } + }); + return holderR; + } + + @Override + public void onBindViewHolder(@NonNull ViewHolderR holder, int position) { + Goods goods = mGoodsList.get(position); + holder.goodsImage.setImageResource(goods.getGoodsImg()); + holder.goodsNotice.setText("热门"); + holder.goodsName.setText(goods.getGoodsName()); + holder.goodsNotice.setText(goods.getGoodsNotice()); + + } + + @Override + public int getItemCount() { + return mGoodsList.size(); + } + + static class ViewHolderR extends RecyclerView.ViewHolder{ + View goodsView; + ImageView goodsImage; + TextView goodsPrice,goodsName,goodsNotice; + + public ViewHolderR(@NonNull View itemView) { + super(itemView); + goodsView = itemView; + goodsImage = itemView.findViewById(R.id.goods_img); + // goodsPrice = itemView.findViewById(R.id.goods_price); + goodsName = itemView.findViewById(R.id.goods_name); + goodsNotice = itemView.findViewById(R.id.goods_notice); + } + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java new file mode 100644 index 0000000..1f92477 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/Goods/GoodsData.java @@ -0,0 +1,101 @@ +package com.example.final_project_app.Goods; + +import android.content.Context; + +import com.example.final_project_app.R; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class GoodsData { + private List goodsList= new ArrayList<>(); +// private String[] data_name= {"惊悚:我只卖凶宅","霸道总裁爱上我", +// "心理罪:十宗罪","阴间神探","六年后,大小姐带着系统杀回来了" +// ,"13路末班车","恐怖酒馆:我只养大凶之物","向盛夏" +// ,"许你年年岁岁好","揉碎温柔"}; + + private Context context; + + public GoodsData(Context context) { + this.context = context; + } + + public List getGoodsList(){ + initGoodsList(); + return goodsList; + } + + /*初始化商品数据列表*/ + private void initGoodsList() { + Goods top1 = new Goods("2023年全国教育事业发展基本情况",getNotice + ("2023年是全面贯彻党的二十大精神开局之年,是实施“十四五”规划承上启下习贯彻习近平总书记关于教育的重要论述," + + "贯彻落实党的二十大精神,牢牢把握教育的政治属性、战略属性和民生属性,锚定教育强国建设目标,扎实推动教育事业高质量发展取得新突破。") + ,getPrice(), R.drawable.sy1); + goodsList.add(top1); + Goods top2 = new Goods("2024年国家助学贷款免息及本金延期偿还如何操作?",getNotice + ("官方解读:为贯彻落实国务院常务会议决策部署,财政部、教育部、中国人民银行、金融监管总局认真研究," + + "报经国务院同意,决定2024年延续实施国家助学贷款免息及本金延期偿还政策。本次措施的出台,预计减免利息24.4亿元," + + "惠及约550万名高校毕业生,有助于缓解贷款学生经济压力和就业压力,帮助学生维护个人信用记录,促进其顺利就业。") + ,getPrice(),R.drawable.sy2); + goodsList.add(top2); + Goods top3 = new Goods("快讯!2024年研考国家线发布",getNotice + ("近日,教育部部署2024年全国硕士研究生招生复试录取工作,要求各地各招生单位以习近平新时代中国特色社会主义思想为指导," + + "深入贯彻党的二十大精神,全面贯彻党的教育方针,落实立德树人根本任务,坚持综合评价、择优录取,严格执行政策,严守工作纪律," + + "规范录取行为,优化考生服务,确保2024年硕士研究生复试录取工作公平、公正、科学。教育部要求招生单位加强招生信息公开," + + "提前在本单位招生网站和“中国研究生招生信息网”上发布本单位复试、调剂、录取工作办法,及时、准确做好政策宣传解读、咨询答复。") + ,getPrice(),R.drawable.sy3); + goodsList.add(top3); + Goods top4 = new Goods("2024年(第三届)研究生招生与培养高峰论坛在成都举办",getNotice + ("5月16日,2024年(第三届)研究生招生与培养高峰论坛在成都举行。本次论坛以“乘势而上攀高向强”为主题,旨在为各地区高校、科研院所提供优质交流平台," + + "共话新时代背景下研究生招生与培养新课题,探讨研究生教育高质量发展之路以及高层次人才选拔培养之道。") + ,getPrice(),R.drawable.sy4); + goodsList.add(top4); + Goods top5 = new Goods("2024国考公告已出!中央机关及其直属机构2024年度考试录用公务员公告",getNotice + ("提交报考申请。报考者可于2023年10月15日8:00至10月24日18:00期间登录专题网站进行报名并提交报考申请," + + "每次只能选报1个职位。报名时,应当仔细阅读诚信承诺书,提交的报考申请材料应当真实、准确、完整。招录机关于2023年10月15日8:00至10月26日18:00期间" + + "对报考申请进行审查,确认报考者是否具有报考资格。报考者可登录专题网站查询资格审查结果。" + + "通过资格审查的,不能再报考其他职位。2023年10月15日8:00至10月24日18:00期间,报考申请未审查或者未通过资格审查的,可以改报其他职位。") + ,getPrice(),R.drawable.sy5); + goodsList.add(top5); + Goods top6 = new Goods("国家公务员考试政审流程是怎样的?需要哪些材料?",getNotice + ("1、审核资料阶段2、查阅人事档案阶段3、座谈阶段4、组织部终审 等到以上三个阶段的考察完毕后,考察组根据考生的回答及表现书写考察报告," + + "然后会把这份考察报告会跟考生提交的资料,共同上交给组织部来做最后的审核,审核结果公布时间以考察组的公示为准。") + ,getPrice(),R.drawable.sy6); + goodsList.add(top6); + Goods top7 = new Goods("2024国家公务员笔试时间定于11月25日至26日!",getNotice + ("公共科目包括行政职业能力测验和申论两科。其中,行政职业能力测验为客观性试题,申论为主观性试题,满分均为100分," + + "详见《中央机关及其直属机构2024年度考试录用公务员公共科目笔试考试大纲》。公共科目笔试试卷分为3类,分别适用于中央机" + + "关及其省级直属机构综合管理类职位、市(地)级及以下直属机构综合管理类职位和行政执法类职位。所有报考者均需参加公共科目笔试。") + ,getPrice(),R.drawable.sy7); + goodsList.add(top7); + Goods top8 = new Goods("公务员考试是什么时候,公务员考试国考和省考的区别",getNotice + ("时间在每年11月的第四个中央、国家机关公务员招考每年一次,省、直辖市、自治区由各地自行决定并组织实施," + + "部分地区每年在上、下半年各组织一次考试,全国大部分地区每年只考一次,省级以下公务员主管部门不组织开展公务员考试。" + + "国考题目难度要相对大于省考,编制和福利待遇不同:通过省考和国考录用的公务员均属于“国家公务员”,均按照《公务员法》和同一套制" + + "度管理录用后也有统一的薪酬体系但因地域范围、部门(行业)类别及单位层级不同薪酬及晋升空间会有所差异。") + ,getPrice(),R.drawable.sy8); + goodsList.add(top8); + + } + + /*商品描述模拟数据*/ + private String getNotice(String name) { + Random random = new Random();//创建Random对象,生成随机数 + int length = random.nextInt(5)+1; + //使用nextInt方法生成一个0到4的随机整数,加1,最终结果是一个1到5的随机整数。存储在变量length中。 + StringBuilder builder = new StringBuilder(); + //创建StringBuilder对象,构建和修改字符串 + for (int i = 0;i{ + private Fragment fragment; + + public BannerViewAdapter(List datas,Fragment fragment) { + super(datas); + this.fragment = fragment; + } + + @Override + public BannerViewAdapter.BannerViewHodler onCreateHolder(ViewGroup parent, int viewType) { + ImageView imageView = new ImageView(parent.getContext()); + imageView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + )); + //setScaleType对图片进行大小处理 CENTER_CROP对原图居中显示后进行等比放缩处理,使最小边等于ImageView的相应边 + imageView.setScaleType(ImageView.ScaleType.CENTER); + return new BannerViewHodler(imageView); + } + //绑定图片资源文件 + @Override + public void onBindView(BannerViewAdapter.BannerViewHodler holder, bannerBean data, int position, int size) { + holder.imageView.setImageResource(data.picture); + } + //ViewHolder主要用于容纳view视图 + public class BannerViewHodler extends RecyclerView.ViewHolder { + ImageView imageView; + + public BannerViewHodler(@NonNull ImageView itemView) { + super(itemView); + this.imageView = itemView; + } + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java new file mode 100644 index 0000000..15bc8ac --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MovieAdapter.java @@ -0,0 +1,69 @@ +package com.example.final_project_app.adpter; + +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.final_project_app.PlayActivity; +import com.example.final_project_app.R; +import com.example.final_project_app.db.Movie; + +import java.util.List; + + +public class MovieAdapter extends RecyclerView.Adapter { + List mymovieList; + public class ViewHolder extends RecyclerView.ViewHolder { + View movieview; + TextView moviename; + + public ViewHolder(@NonNull View view) { + super(view); + moviename = itemView.findViewById(R.id.moviename); + movieview = view; + } + } + //利用适配器的构造函数传入要展示的数据 + public MovieAdapter(List mymovieList){ + this.mymovieList=mymovieList; + } + //创建实例,把每一行的布局加载进来,创建一个ViewHolder实例,将布局传入到构造函数中,最后将实例返回 + public MovieAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){ + View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.movie_item,parent,false); + final ViewHolder holder=new ViewHolder(view); + //单击任意视频跳转到播放界面 + holder.movieview.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //获取位置 + int position=holder.getAdapterPosition(); + Movie movie=mymovieList.get(position); + //获取movie中的名字 + String mymoviename=movie.getMoviename(); + //获取视频播放地址 + String mymovievideo=movie.getMovieuri(); + + //获取播放视频的位置后跳转到播放页 + Intent intent=new Intent(view.getContext(),PlayActivity.class); + //然后根据位置传递信息 + intent.putExtra("my",mymoviename); + intent.putExtra("movieurl",mymovievideo); + view.getContext().startActivity(intent); + } + }); + return holder; + } + //对recyclerview中子项目进行赋值,通过位置得到当前的实例,然后电影名和视频显示在控件上 + public void onBindViewHolder(@NonNull MovieAdapter.ViewHolder holder,int position){ + Movie movie=mymovieList.get(position); + holder.moviename.setText(movie.getMoviename()); + } + public int getItemCount(){ + return mymovieList.size(); + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java new file mode 100644 index 0000000..1a134a4 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/MyFragmentPaperAdapter.java @@ -0,0 +1,59 @@ +package com.example.final_project_app.adpter; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + +import com.example.final_project_app.Fragment.FirstFragment; +import com.example.final_project_app.Fragment.FourFragment; +import com.example.final_project_app.Fragment.ThreeFragment; +import com.example.final_project_app.Fragment.TwoFragment; +import com.example.final_project_app.MainActivity; + + +public class MyFragmentPaperAdapter extends FragmentPagerAdapter { + private final FirstFragment b1; + private final TwoFragment b2; + private final ThreeFragment b3; + private final FourFragment b4; + private int PAGE = 4; + + public MyFragmentPaperAdapter(@NonNull FragmentManager fm) { + super(fm); + + b1 = new FirstFragment(); + b2 = new TwoFragment(); + b3 = new ThreeFragment(); + b4 = new FourFragment(); + } + + @NonNull + @Override + public Fragment getItem(int position) { + Fragment fragment = null; + switch (position){ + case MainActivity.PAGE_ONE: + fragment = b1; + break; + + case MainActivity.PAGE_TWO: + fragment = b2; + break; + + case MainActivity.PAGE_THREE: + fragment = b3; + break; + + case MainActivity.PAGE_FOUR: + fragment = b4; + break; + } + return fragment; + } + + @Override + public int getCount() { + return PAGE; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java new file mode 100644 index 0000000..76ade87 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/adpter/NoteRecyAdapter.java @@ -0,0 +1,121 @@ +package com.example.final_project_app.adpter; + +import android.annotation.SuppressLint; +import android.app.Dialog; +import android.content.Context; +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.final_project_app.R; +import com.example.final_project_app.db.NoteBook; +import com.example.final_project_app.db.NoteData; +import com.example.final_project_app.sql.UpdateNoteActivity; + +import java.util.List; + + +public class NoteRecyAdapter extends RecyclerView.Adapter { + private List dataList; + private Context context; + private TextView tv_edit,tv_deledt; + + public NoteRecyAdapter(List dataList, Context context) { + this.dataList = dataList; + this.context = context; + } + + @NonNull + @Override + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + //加载布局 + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.note_item_recy,parent,false); + MyViewHolder myViewHolder = new MyViewHolder(view); + + + return myViewHolder; + } + + @Override + public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) { + NoteData data = dataList.get(position); + holder.tv_title.setText(data.getTitle()); + holder.tv_time.setText(data.getTimee()); + holder.tv_content.setText(data.getContent()); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Dialog dg = new Dialog(context, android.R.style.ThemeOverlay_Material_Dialog_Alert); + View view = LayoutInflater.from(context).inflate(R.layout.note_dialog,null); + + TextView tv_edit= view.findViewById(R.id.tv_edit); + TextView tv_delete = view.findViewById(R.id.tv_delete); + tv_edit.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(context, UpdateNoteActivity.class);//跳转到更新编辑页面 + intent.putExtra("data_sql",data); + context.startActivity(intent); + } + }); + tv_delete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //删除 + NoteBook noteBook = new NoteBook(context); + int row = noteBook.deleteById(data); + if (row>0){ + removeData(position); + Toast.makeText(context, "删除成功", Toast.LENGTH_SHORT).show(); + }else { + Toast.makeText(context, "删除失败", Toast.LENGTH_SHORT).show(); + } + + } + }); + dg.setContentView(view); + dg.show(); + } + }); + } +//删除 + private void removeData(int position) { + //从列表删除数据 + dataList.remove(position); + notifyItemRemoved(position); + } + + + @Override + public int getItemCount() { + return dataList.size(); + } + + public void refresh(List datas) { + this.dataList = datas; + notifyDataSetChanged(); + } + + class MyViewHolder extends RecyclerView.ViewHolder{ + private TextView tv_title; + private TextView tv_time; + private TextView tv_content; + + public MyViewHolder(@NonNull View itemView) { + super(itemView); + + tv_title = (TextView) itemView.findViewById(R.id.tv_title); + tv_time = (TextView) itemView.findViewById(R.id.tv_time); + tv_content = (TextView) itemView.findViewById(R.id.tv_content); + + + } + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java new file mode 100644 index 0000000..28be72b --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/dao/UserDao.java @@ -0,0 +1,163 @@ +package com.example.final_project_app.dao; + +import android.util.Log; + +import com.example.final_project_app.entity.User; +import com.example.final_project_app.utils.JDBCUtils; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.HashMap; + +/** + + * **/ +public class UserDao { + + private static final String TAG = "mysql-myapplication-UserDao"; + + /** + * function: 登录 + * */ + public int login(String userAccount, String userPassword){ + + HashMap map = new HashMap<>(); + // 根据数据库名称,建立连接 + Connection connection = JDBCUtils.getConn(); + int msg = 0; + try { + // mysql简单的查询语句。这里是根据user表的userAccount字段来查询某条记录 + String sql = "select * from user where userAccount = ?"; + if (connection != null){// connection不为null表示与数据库建立了连接 + PreparedStatement ps = connection.prepareStatement(sql); + if (ps != null){ + Log.e(TAG,"账号:" + userAccount); + //根据账号进行查询 + ps.setString(1, userAccount); + // 执行sql查询语句并返回结果集 + ResultSet rs = ps.executeQuery(); + int count = rs.getMetaData().getColumnCount(); + //将查到的内容储存在map里 + while (rs.next()){ + // 注意:下标是从1开始的 + for (int i = 1;i <= count;i++){ + String field = rs.getMetaData().getColumnName(i); + map.put(field, rs.getString(field)); + } + } + connection.close(); + ps.close(); + + if (map.size()!=0){ + StringBuilder s = new StringBuilder(); + //寻找密码是否匹配 + for (String key : map.keySet()){ + if(key.equals("userPassword")){ + if(userPassword.equals(map.get(key))){ + msg = 1; //密码正确 + } + else + msg = 2; //密码错误 + break; + } + } + }else { + Log.e(TAG, "查询结果为空"); + msg = 3; + } + }else { + msg = 0; + } + }else { + msg = 0; + } + }catch (Exception e){ + e.printStackTrace(); + Log.d(TAG, "异常login:" + e.getMessage()); + msg = 0; + } + return msg; + } + + + /** + * function: 注册 + * */ + public boolean register(User user){ + HashMap map = new HashMap<>(); + // 根据数据库名称,建立连接 + Connection connection = JDBCUtils.getConn(); + + try { + String sql = "insert into user(userAccount,userPassword,userName,userType,userState,userDel) values (?,?,?,?,?,?)"; + if (connection != null){// connection不为null表示与数据库建立了连接 + PreparedStatement ps = connection.prepareStatement(sql); + if (ps != null){ + + //将数据插入数据库 + ps.setString(1,user.getUserAccount()); + ps.setString(2,user.getUserPassword()); + ps.setString(3,user.getUserName()); + ps.setInt(4,user.getUserType()); + ps.setInt(5, user.getUserState()); + ps.setInt(6,user.getUserDel()); + + // 执行sql查询语句并返回结果集 + int rs = ps.executeUpdate(); + if(rs>0) + return true; + else + return false; + }else { + return false; + } + }else { + return false; + } + }catch (Exception e){ + e.printStackTrace(); + Log.e(TAG, "异常register:" + e.getMessage()); + return false; + } + + } + + /** + * function: 根据账号进行查找该用户是否存在 + * */ + public User findUser(String userAccount) { + + // 根据数据库名称,建立连接 + Connection connection = JDBCUtils.getConn(); + User user = null; + try { + String sql = "select * from user where userAccount = ?"; + if (connection != null){// connection不为null表示与数据库建立了连接 + PreparedStatement ps = connection.prepareStatement(sql); + if (ps != null) { + ps.setString(1, userAccount); + ResultSet rs = ps.executeQuery(); + + while (rs.next()) { + //注意:下标是从1开始 + int id = rs.getInt(1); + String userAccount1 = rs.getString(2); + String userPassword = rs.getString(3); + String userName = rs.getString(4); + int userType = rs.getInt(5); + int userState = rs.getInt(6); + int userDel = rs.getInt(7); + user = new User(id, userAccount1, userPassword, userName, userType, userState, userDel); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + Log.d(TAG, "异常findUser:" + e.getMessage()); + return null; + } + return user; + } + +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java new file mode 100644 index 0000000..ac31b57 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/CultrualData.java @@ -0,0 +1,30 @@ +package com.example.final_project_app.db; + +public class CultrualData { + private String name; + private int image; + public CultrualData() { + + } + public CultrualData(String name, int imageId) { + this.name = name; + this.image = imageId; + } + + @Override + public String toString() { + return "简介:" + name ; + } + + public String getName() { + return name; + } + + public int getImageId() { + return image; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java new file mode 100644 index 0000000..d860931 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/Movie.java @@ -0,0 +1,16 @@ +package com.example.final_project_app.db; + +public class Movie { + private String moviename; + private String movieuri; + public Movie(String moviename,String movieuri){ + this.moviename=moviename; + this.movieuri=movieuri; + } + public String getMoviename(){ + return moviename; + } + public String getMovieuri(){ + return movieuri; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java new file mode 100644 index 0000000..115d3e0 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteBook.java @@ -0,0 +1,77 @@ +package com.example.final_project_app.db; + +import android.annotation.SuppressLint; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +import java.util.ArrayList; +import java.util.List; + + +public class NoteBook extends SQLiteOpenHelper { + private List dataList; + private static final String DB_NAME = "note.db"; + private static final String TABLE_NAME = "notebook"; + private static final String CREATE_TABLE = "create table "+ + TABLE_NAME +" (id integer primary key autoincrement," + + "title text,timee text,content text)"; + public NoteBook(Context context) { + super(context, DB_NAME, null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + db.execSQL(CREATE_TABLE); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int i, int i1) { + + + } + + public long insert(NoteData dt){ + SQLiteDatabase sd = getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("title",dt.getTitle()); + values.put("content",dt.getContent()); + values.put("timee",dt.getTimee()); + return sd.insert(TABLE_NAME,null,values); + } + + public List query() { + List dtlist = new ArrayList<>(); + SQLiteDatabase sd = getWritableDatabase(); + Cursor cursor = sd.query(TABLE_NAME,null,null,null,null,null,null); + if (cursor!=null) { + while (cursor.moveToNext()){ + @SuppressLint("Range") String title = cursor.getString(cursor.getColumnIndex("title")); + @SuppressLint("Range") String content = cursor.getString(cursor.getColumnIndex("content")); + @SuppressLint("Range") String timee = cursor.getString(cursor.getColumnIndex("timee")); + + NoteData dt_sql = new NoteData(); + dt_sql.setTitle(title); + dt_sql.setContent(content); + dt_sql.setTimee(timee); + dtlist.add(dt_sql); + } + cursor.close(); + } + return dtlist; + } + //更新 + public int updateByTitle(NoteData dt) { + SQLiteDatabase sd = getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("content", dt.getContent()); + return sd.update(TABLE_NAME, values, "title like ?", new String[]{dt.getTitle()}); + } + //删除 //调用delete语句 + public int deleteById(NoteData dt){ + SQLiteDatabase sd = getWritableDatabase(); + return sd.delete(TABLE_NAME,"title like ?",new String[]{dt.getTitle()}); + } +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java new file mode 100644 index 0000000..9762130 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/NoteData.java @@ -0,0 +1,57 @@ +package com.example.final_project_app.db; + +import java.io.Serializable; + +public class NoteData implements Serializable { + private String title; + private String content; + private String timee; + private String id; + + public NoteData(String title, String content) { + this.title = title; + this.content = content; + } + + public NoteData() { + } + + public NoteData(String title, String content, String time, String id) { + this.title = title; + this.content = content; + this.timee = time; + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTimee() { + return timee; + } + + public void setTimee(String timee) { + this.timee = timee; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java new file mode 100644 index 0000000..ea6a7ec --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/PermissionUtiils.java @@ -0,0 +1,27 @@ +package com.example.final_project_app.db; + +import android.Manifest; +import android.app.Activity; +import android.content.pm.PackageManager; + +import androidx.core.app.ActivityCompat; + +public class PermissionUtiils { +//请求权限类 + // Storage Permissions + private static final int REQUEST_EXTERNAL_STORAGE = 1; + private static String[] PERMISSIONS_STORAGE = { + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE}; + public static void verifyStoragePermissions(Activity activity) { + // Check if we have write permission + int permission = ActivityCompat.checkSelfPermission(activity, + Manifest.permission.WRITE_EXTERNAL_STORAGE); + + if (permission != PackageManager.PERMISSION_GRANTED) { + // We don't have permission so prompt the user + ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, + REQUEST_EXTERNAL_STORAGE); + } + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java new file mode 100644 index 0000000..0083fc0 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/db/bannerBean.java @@ -0,0 +1,17 @@ +package com.example.final_project_app.db; + +public class bannerBean { + public int picture; + + public bannerBean(int picture) { + this.picture = picture; + } + + public int getPicture() { + return picture; + } + + public void setPicture(int picture) { + this.picture = picture; + } +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java new file mode 100644 index 0000000..746cc18 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/entity/User.java @@ -0,0 +1,84 @@ +package com.example.final_project_app.entity; +public class User { + + private int id; + private String userAccount; + private String userPassword; + private String userName; + private int userType; + private int userState; + private int userDel; + + + public User() { + } + + public User(int id, String userAccount, String userPassword, String userName, int userType, int userState, int userDel) { + this.id = id; + this.userAccount = userAccount; + this.userPassword = userPassword; + this.userName = userName; + this.userType = userType; + this.userState = userState; + this.userDel = userDel; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getUserAccount() { + return userAccount; + } + + public void setUserAccount(String userAccount) { + this.userAccount = userAccount; + } + + public String getUserPassword() { + return userPassword; + } + + public void setUserPassword(String userPassword) { + this.userPassword = userPassword; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public int getUserType() { + return userType; + } + + public void setUserType(int userType) { + this.userType = userType; + } + + public int getUserState() { + return userState; + } + + public void setUserState(int userState) { + this.userState = userState; + } + + public int getUserDel() { + return userDel; + } + + public void setUserDel(int userDel) { + this.userDel = userDel; + } +} + + + diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java new file mode 100644 index 0000000..91487a9 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/login.java @@ -0,0 +1,69 @@ +package com.example.final_project_app; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.final_project_app.dao.UserDao; + +/** + * function:连接页面加载首页 + */ +public class login extends AppCompatActivity { + private static final String TAG = "mysql-myapplication-MainActivity"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_login); + } + + public void reg(View view){ + startActivity(new Intent(getApplicationContext(), register.class)); + } + + + /** + * function: 登录 + * */ + public void login(View view){ + + EditText EditTextAccount = findViewById(R.id.uesrAccount); + EditText EditTextPassword = findViewById(R.id.userPassword); + + new Thread(){ + @Override + public void run() { + UserDao userDao = new UserDao(); + int msg = userDao.login(EditTextAccount.getText().toString(),EditTextPassword.getText().toString()); + hand1.sendEmptyMessage(msg); + } + }.start(); + + } + + @SuppressLint("HandlerLeak") + final Handler hand1 = new Handler() { + @Override + public void handleMessage(Message msg) { + if (msg.what == 0){ + Toast.makeText(getApplicationContext(), "登录失败", Toast.LENGTH_LONG).show(); + } else if (msg.what == 1) { + Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_LONG).show(); + startActivity(new Intent(login.this, MainActivity.class)); + login.this.finish(); + } else if (msg.what == 2){ + Toast.makeText(getApplicationContext(), "密码错误", Toast.LENGTH_LONG).show(); + } else if (msg.what == 3){ + Toast.makeText(getApplicationContext(), "账号不存在", Toast.LENGTH_LONG).show(); + } + } + }; +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java new file mode 100644 index 0000000..ca80497 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/register.java @@ -0,0 +1,93 @@ +package com.example.final_project_app; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.final_project_app.dao.UserDao; +import com.example.final_project_app.entity.User; + +/** + * function:连接注册页面 + */ +public class register extends AppCompatActivity { + private static final String TAG = "mysql-myapplication-register"; + EditText userAccount = null; + EditText userPassword = null; + EditText userName = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_regist); + + userAccount = findViewById(R.id.userAccount); + userPassword = findViewById(R.id.userPassword); + } + + + public void register(View view){ + + String userAccount1 = userAccount.getText().toString(); + String userPassword1 = userPassword.getText().toString(); + String userName1 = userName.getText().toString(); + User user = new User(); + + user.setUserAccount(userAccount1); + user.setUserPassword(userPassword1); + user.setUserName(userName1); + user.setUserType(1); + user.setUserState(0); + user.setUserDel(0); + + new Thread(){ + @Override + public void run() { + + int msg = 0; + + UserDao userDao = new UserDao(); + + User uu = userDao.findUser(user.getUserAccount()); + if(uu != null){ + msg = 1; + } + else{ + boolean flag = userDao.register(user); + if(flag){ + msg = 2; + } + } + hand.sendEmptyMessage(msg); + } + }.start(); + + } + @SuppressLint("HandlerLeak") + final Handler hand = new Handler() + { + public void handleMessage(Message msg) { + if(msg.what == 0) { + Toast.makeText(getApplicationContext(),"注册失败",Toast.LENGTH_SHORT).show(); + } else if(msg.what == 1) { + Toast.makeText(getApplicationContext(),"该账号已经存在,请换一个账号",Toast.LENGTH_SHORT).show(); + } else if(msg.what == 2) { + Toast.makeText(getApplicationContext(), "注册成功", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(register.this, login.class)); + register.this.finish(); + Intent intent = new Intent(); + //将想要传递的数据用putExtra封装在intent中 + intent.putExtra("a","注册"); + setResult(RESULT_CANCELED,intent); + finish(); + } + } + }; +} diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java new file mode 100644 index 0000000..f7303f7 --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/AddNoteActivity.java @@ -0,0 +1,53 @@ +package com.example.final_project_app.sql; + +import android.os.Bundle; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.final_project_app.R; +import com.example.final_project_app.db.NoteBook; +import com.example.final_project_app.db.NoteData; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class AddNoteActivity extends AppCompatActivity { + + private NoteBook nb; + + private EditText et_content,et_title; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_add_note); + et_title= (EditText) findViewById(R.id.et_title); + et_content = (EditText) findViewById(R.id.et_content); + } + + public void BtnAdd(View view) { + String title = et_title.getText().toString().trim(); + String content = et_content.getText().toString().trim(); + + NoteData dt = new NoteData(title,content); + dt.setTimee(getSystemCurrentTime()); + + nb = new NoteBook(this); + long rowId = nb.insert(dt); + if (rowId!=-1) { + Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show(); + this.finish(); + }else { + Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show(); + } + } + + private String getSystemCurrentTime() { + SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss"); + Date datetime = new Date(); + return sdf.format(datetime); + } +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java new file mode 100644 index 0000000..22dbb2a --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/sql/UpdateNoteActivity.java @@ -0,0 +1,63 @@ +package com.example.final_project_app.sql; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.example.final_project_app.R; +import com.example.final_project_app.db.NoteBook; +import com.example.final_project_app.db.NoteData; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class UpdateNoteActivity extends AppCompatActivity { + + private EditText et_content,et_title; + private NoteData dt_up; + private NoteBook nb; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_update_note); + //获取控件 + et_title= (EditText) findViewById(R.id.et_title); + et_content = (EditText) findViewById(R.id.et_content); + //数据接收 + Intent intent = getIntent(); + dt_up = (NoteData) intent.getSerializableExtra("data_sql"); + if (dt_up!=null){ + et_title.setText(dt_up.getTitle()); + et_content.setText(dt_up.getContent()); + } + } + + public void BtnUpdate(View view) { + String title = et_title.getText().toString().trim(); + String content = et_content.getText().toString().trim(); + + NoteData dt = new NoteData(title,content); + dt.setTimee(getSystemCurrentTime()); + + nb = new NoteBook(this); + nb.updateByTitle(dt); + int row = nb.updateByTitle(dt); + if (row>0){ + Toast.makeText(this, "更新成功", Toast.LENGTH_SHORT).show(); + this.finish(); + }else { + Toast.makeText(this, "更新失败", Toast.LENGTH_SHORT).show(); + } + } + private String getSystemCurrentTime() { + SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd HH:mm:ss"); + Date datetime = new Date(); + return sdf.format(datetime); + } + +} \ No newline at end of file diff --git a/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java b/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java new file mode 100644 index 0000000..f7633ae --- /dev/null +++ b/Final_Project_app/app/src/main/java/com/example/final_project_app/utils/JDBCUtils.java @@ -0,0 +1,35 @@ +package com.example.final_project_app.utils; +import java.sql.Connection; +import java.sql.DriverManager; + +/** + * function: 数据库工具类,连接数据库用 + */ +public class JDBCUtils { + private static final String TAG = "mysql-myapplication-JDBCUtils"; + + private static String driver = "com.mysql.jdbc.Driver";// MySql驱动 + + private static String dbName = "android_ruanjian";// 数据库名称 + + private static String user = "root";// 用户名 + + private static String password = "root";// 密码 + + public static Connection getConn(){ + + Connection connection = null; + try{ + Class.forName(driver);// 动态加载类 + String ip = "192.168.16.81";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个 + + // 尝试建立到给定数据库URL的连接 + connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName, + user, password); + + }catch (Exception e){ + e.printStackTrace(); + } + return connection; + } +} diff --git a/Final_Project_app/app/src/main/res/drawable/back_home.jpg b/Final_Project_app/app/src/main/res/drawable/back_home.jpg new file mode 100644 index 0000000..f9a00e7 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home0.png b/Final_Project_app/app/src/main/res/drawable/back_home0.png new file mode 100644 index 0000000..fbbb334 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home0.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home01.png b/Final_Project_app/app/src/main/res/drawable/back_home01.png new file mode 100644 index 0000000..0ef692a Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home01.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home2.jpg b/Final_Project_app/app/src/main/res/drawable/back_home2.jpg new file mode 100644 index 0000000..5a7d890 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home2.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home3.png b/Final_Project_app/app/src/main/res/drawable/back_home3.png new file mode 100644 index 0000000..65c08bd Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home3.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home5.png b/Final_Project_app/app/src/main/res/drawable/back_home5.png new file mode 100644 index 0000000..cd1cba3 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home5.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png b/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png new file mode 100644 index 0000000..d268cbc Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home_bottom1.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png b/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png new file mode 100644 index 0000000..2e4976e Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_home_bottom2.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_login.png b/Final_Project_app/app/src/main/res/drawable/back_login.png new file mode 100644 index 0000000..b67560e Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_login.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/back_regist.jpg b/Final_Project_app/app/src/main/res/drawable/back_regist.jpg new file mode 100644 index 0000000..c37661a Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/back_regist.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner1.png b/Final_Project_app/app/src/main/res/drawable/banner1.png new file mode 100644 index 0000000..3279cd8 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner1.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner2.png b/Final_Project_app/app/src/main/res/drawable/banner2.png new file mode 100644 index 0000000..d8c02e2 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner2.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner3.png b/Final_Project_app/app/src/main/res/drawable/banner3.png new file mode 100644 index 0000000..0beeb38 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner3.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner4.png b/Final_Project_app/app/src/main/res/drawable/banner4.png new file mode 100644 index 0000000..17c180c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner4.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner5.png b/Final_Project_app/app/src/main/res/drawable/banner5.png new file mode 100644 index 0000000..e502a6c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner5.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/banner6.png b/Final_Project_app/app/src/main/res/drawable/banner6.png new file mode 100644 index 0000000..52eda13 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/banner6.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list1.png b/Final_Project_app/app/src/main/res/drawable/cr_list1.png new file mode 100644 index 0000000..d0c737b Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list1.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list2.png b/Final_Project_app/app/src/main/res/drawable/cr_list2.png new file mode 100644 index 0000000..b5f1d11 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list2.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list3.png b/Final_Project_app/app/src/main/res/drawable/cr_list3.png new file mode 100644 index 0000000..881cfe5 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list3.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list4.png b/Final_Project_app/app/src/main/res/drawable/cr_list4.png new file mode 100644 index 0000000..305814f Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list4.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list5.png b/Final_Project_app/app/src/main/res/drawable/cr_list5.png new file mode 100644 index 0000000..20d88f3 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list5.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list6.png b/Final_Project_app/app/src/main/res/drawable/cr_list6.png new file mode 100644 index 0000000..e36e5c4 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list6.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list7.png b/Final_Project_app/app/src/main/res/drawable/cr_list7.png new file mode 100644 index 0000000..f5d3c8e Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list7.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list8.png b/Final_Project_app/app/src/main/res/drawable/cr_list8.png new file mode 100644 index 0000000..618d12c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list8.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/cr_list9.png b/Final_Project_app/app/src/main/res/drawable/cr_list9.png new file mode 100644 index 0000000..6e0fe40 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/cr_list9.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/dot_dark.png b/Final_Project_app/app/src/main/res/drawable/dot_dark.png new file mode 100644 index 0000000..2b55a03 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_dark.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/dot_green.png b/Final_Project_app/app/src/main/res/drawable/dot_green.png new file mode 100644 index 0000000..7036420 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_green.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/dot_white.png b/Final_Project_app/app/src/main/res/drawable/dot_white.png new file mode 100644 index 0000000..a7ead6a Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/dot_white.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/guide.png b/Final_Project_app/app/src/main/res/drawable/guide.png new file mode 100644 index 0000000..6b793d4 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/guide.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/home_wait.png b/Final_Project_app/app/src/main/res/drawable/home_wait.png new file mode 100644 index 0000000..f44f1f4 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/home_wait.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml b/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml b/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png b/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png new file mode 100644 index 0000000..eaedadc Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_movebofang.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/icon_quit.png b/Final_Project_app/app/src/main/res/drawable/icon_quit.png new file mode 100644 index 0000000..7a367eb Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_quit.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/icon_write.png b/Final_Project_app/app/src/main/res/drawable/icon_write.png new file mode 100644 index 0000000..5b009d7 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/icon_write.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/img.png b/Final_Project_app/app/src/main/res/drawable/img.png new file mode 100644 index 0000000..9fb8344 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/img_1.png b/Final_Project_app/app/src/main/res/drawable/img_1.png new file mode 100644 index 0000000..9fb8344 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img_1.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/img_2.png b/Final_Project_app/app/src/main/res/drawable/img_2.png new file mode 100644 index 0000000..9fb8344 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/img_2.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/intro_four.jpg b/Final_Project_app/app/src/main/res/drawable/intro_four.jpg new file mode 100644 index 0000000..fc0a0e6 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_four.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/intro_one.jpg b/Final_Project_app/app/src/main/res/drawable/intro_one.jpg new file mode 100644 index 0000000..0e480c8 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_one.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/intro_test.jpg b/Final_Project_app/app/src/main/res/drawable/intro_test.jpg new file mode 100644 index 0000000..f634d53 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_test.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/intro_three.jpg b/Final_Project_app/app/src/main/res/drawable/intro_three.jpg new file mode 100644 index 0000000..5a1020c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/intro_three.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/left.png b/Final_Project_app/app/src/main/res/drawable/left.png new file mode 100644 index 0000000..0e5171c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/left.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/page_back1.png b/Final_Project_app/app/src/main/res/drawable/page_back1.png new file mode 100644 index 0000000..f21c33d Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back1.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/page_back2.png b/Final_Project_app/app/src/main/res/drawable/page_back2.png new file mode 100644 index 0000000..44ec2da Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back2.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/page_back3.png b/Final_Project_app/app/src/main/res/drawable/page_back3.png new file mode 100644 index 0000000..d25a375 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back3.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/page_back4.jpg b/Final_Project_app/app/src/main/res/drawable/page_back4.jpg new file mode 100644 index 0000000..1164738 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/page_back4.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/person_aboutus.png b/Final_Project_app/app/src/main/res/drawable/person_aboutus.png new file mode 100644 index 0000000..43d95b7 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_aboutus.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/person_head.png b/Final_Project_app/app/src/main/res/drawable/person_head.png new file mode 100644 index 0000000..d723432 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_head.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/person_help.png b/Final_Project_app/app/src/main/res/drawable/person_help.png new file mode 100644 index 0000000..58fd71c Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_help.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/person_quite.png b/Final_Project_app/app/src/main/res/drawable/person_quite.png new file mode 100644 index 0000000..02e156b Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_quite.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/person_upimg.png b/Final_Project_app/app/src/main/res/drawable/person_upimg.png new file mode 100644 index 0000000..1fc4334 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/person_upimg.png differ diff --git a/Final_Project_app/app/src/main/res/drawable/select_button_text.xml b/Final_Project_app/app/src/main/res/drawable/select_button_text.xml new file mode 100644 index 0000000..a942391 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/select_button_text.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml b/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml new file mode 100644 index 0000000..dfa1f9b --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/shape_error_answer.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml new file mode 100644 index 0000000..a7e9044 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml new file mode 100644 index 0000000..e79e1f4 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/shape_radiobutton2.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml b/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml new file mode 100644 index 0000000..a91b570 --- /dev/null +++ b/Final_Project_app/app/src/main/res/drawable/shape_success_answer.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/drawable/sy1.jpg b/Final_Project_app/app/src/main/res/drawable/sy1.jpg new file mode 100644 index 0000000..573f8ba Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy1.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy2.jpg b/Final_Project_app/app/src/main/res/drawable/sy2.jpg new file mode 100644 index 0000000..7caf012 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy2.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy3.jpg b/Final_Project_app/app/src/main/res/drawable/sy3.jpg new file mode 100644 index 0000000..d0772a0 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy3.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy4.jpg b/Final_Project_app/app/src/main/res/drawable/sy4.jpg new file mode 100644 index 0000000..69fbbd9 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy4.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy5.jpg b/Final_Project_app/app/src/main/res/drawable/sy5.jpg new file mode 100644 index 0000000..8334271 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy5.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy6.jpg b/Final_Project_app/app/src/main/res/drawable/sy6.jpg new file mode 100644 index 0000000..5738b82 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy6.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy7.jpg b/Final_Project_app/app/src/main/res/drawable/sy7.jpg new file mode 100644 index 0000000..c059fa6 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy7.jpg differ diff --git a/Final_Project_app/app/src/main/res/drawable/sy8.jpg b/Final_Project_app/app/src/main/res/drawable/sy8.jpg new file mode 100644 index 0000000..3182909 Binary files /dev/null and b/Final_Project_app/app/src/main/res/drawable/sy8.jpg differ diff --git a/Final_Project_app/app/src/main/res/layout/activity_about_us.xml b/Final_Project_app/app/src/main/res/layout/activity_about_us.xml new file mode 100644 index 0000000..695dab3 --- /dev/null +++ b/Final_Project_app/app/src/main/res/layout/activity_about_us.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/layout/activity_add_note.xml b/Final_Project_app/app/src/main/res/layout/activity_add_note.xml new file mode 100644 index 0000000..1656a90 --- /dev/null +++ b/Final_Project_app/app/src/main/res/layout/activity_add_note.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + 8 + + + \ No newline at end of file diff --git a/Final_Project_app/app/src/main/res/layout/activity_regist.xml b/Final_Project_app/app/src/main/res/layout/activity_regist.xml new file mode 100644 index 0000000..26e0123 --- /dev/null +++ b/Final_Project_app/app/src/main/res/layout/activity_regist.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + +