赞
踩
导入依赖
implementation'com.airbnb.android:lottie:3.4.1'
ViewPager实现注册登录功能(开源)
滑动和点击实现注册登录界面的切换,用两个fragment,实现注册登录片段,通过SharedPreferences实现注册数据的保存,和登录密码的验证,以LoginActivity为载体,用getActivity()获得当前的Activity。
在SignupFragment中使用editor保存用户注册的数据,在LoginTabFragment中用getUserinfo方法获得SharedPreferences存储的数据。
历史记录展示,recyclerview的适配器中,onCreateViewHolder用于加载相应视图,onBindViewHolder用于得到相关数据,以及对记事点击的监听,处理每一个item的点击事件,即记事的修改功能,MyViewHolder类用于装载一个记录。
用轻量级数据库SQLite,新建一个表,在CRUD文件中实现数据的增删改查,相关数据库操作,用mode关键词区分用户是需要修改还是新增一个记事,
startActivityForResult方法,用于得到用户输入的信息,在编辑已有记录的时候,需传入一个id值,用于在数据库中找到该条记录,对数据进行修改。
删除所有记录按钮,弹出一个确认删除窗口,若确认则删除所有记录。
OnActivityResult,处理Activity传回来的相关数据
主页面后端处理逻辑:
- package com.example.myapplication6;
-
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.recyclerview.widget.LinearLayoutManager;
- import androidx.recyclerview.widget.RecyclerView;
- import androidx.viewpager.widget.ViewPager;
-
- import android.annotation.SuppressLint;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.widget.Button;
-
- import com.google.android.material.floatingactionbutton.FloatingActionButton;
-
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.List;
-
- public class MainActivity extends AppCompatActivity {
-
- FloatingActionButton btn;
- private ViewPager viewPager;
- Button clo;
- Button user;
- FloatingActionButton dtn;
- private NoteDatabase dbHelper;
- private Context context=this;
- private recycleAdapter adapter;
- private RecyclerView rv;
-
- private List<Note> noteList=new ArrayList<>();
- @SuppressLint("MissingInflatedId")
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- btn=findViewById(R.id.fab);
- rv=findViewById(R.id.rv_1);
- dtn=findViewById(R.id.delete);
- clo=findViewById(R.id.cloth);
- user=findViewById(R.id.sitimg);
-
- adapter=new recycleAdapter(MainActivity.this,noteList);
-
- rv.setAdapter(adapter);
- refreshrecycleView();
-
- rv.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
- //添加记录
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent=new Intent(MainActivity.this,EditActivity.class);
- intent.putExtra("mode",4);
- startActivityForResult(intent,0);
- }
- });
-
- //生活指标展示
- clo.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent=new Intent(MainActivity.this, WebvisitActivity.class);
- startActivity(intent);
- }
- });
-
- //个人中心
- user.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent=new Intent(MainActivity.this, User.class);
- startActivity(intent);
- }
- });
-
- //删除所有记录
- dtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
-
- /*将确认界面加载到对话框中*/
- View viewLogin = LayoutInflater.from(MainActivity.this).inflate(R.layout.layout_dialog, null);
- AlertDialog.Builder builderLogin = new AlertDialog.Builder(MainActivity.this);
- builderLogin.setView(viewLogin);
-
- /*为确认删除对话框设置相关属性*/
- builderLogin.setMessage("")
- .setCancelable(false)
- .setPositiveButton("确定",null)
- .setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialogInterface, int i) {
- dialogInterface.dismiss();
- }
- });
- /*使用AlertDialog.Builder的create( )方法来创建AlertDialog实例,并显示该对话框*/
- AlertDialog alertDialog = builderLogin.create();
- alertDialog.show();
-
- alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- CRUD op=new CRUD(context);
- op.open();
- op.Deleteall();
- op.close();
- refreshrecycleView();
- alertDialog.dismiss();
- }
- });
- }
- });
- }
-
- //接收startActivityForResult的结果
- protected void onActivityResult(int requestCode,int resultCode,Intent data) {
-
- int returnMode;
- long note_Id;
- returnMode=data.getExtras().getInt("mode",-1);
- note_Id=data.getExtras().getLong("id",0);
- int tag=data.getExtras().getInt("tag",1);
- //修改笔记
- if(returnMode==1){
- String content=data.getStringExtra("content");
- String time=data.getStringExtra("time");
- Note note=new Note(content,time,tag);
- note.setId(note_Id);
- CRUD op=new CRUD(context);
- op.open();
- op.updateNote(note);
- op.close();
- }
- //新建笔记
- else if(requestCode==0){
- String content=data.getStringExtra("content");
- String time=data.getStringExtra("time");
- Note note=new Note(content,time,tag);
- CRUD op=new CRUD(context);
- op.open();
- op.addNote(note);
- op.close();
- }
- //其他情况不做处理
- else{}
- refreshrecycleView();
- super.onActivityResult(requestCode, resultCode, data);
- }
- //刷新一次
- public void refreshrecycleView(){
- CRUD op=new CRUD(context);
- op.open();
- if (noteList.size()>0) {
- noteList.clear();
- }
- noteList.addAll(op.getAllNote());
- op.close();
- adapter.notifyDataSetChanged();
- }
- }
笔记编辑页面后端逻辑:
- package com.example.myapplication6;
-
- import android.annotation.SuppressLint;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- public class EditActivity extends AppCompatActivity {
-
- EditText editText;
- private Button bt;
- private String old_content="";
- private String old_time="";
- private int old_Tag=1;
- private long id=0;
- private int openMode=0;
-
- public Intent intent=new Intent();
-
-
- @SuppressLint("MissingInflatedId")
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.edit_layout);
-
- editText=findViewById(R.id.edit);
- bt=findViewById(R.id.button);
-
- //点击每条记录拿到内容显示编辑界面
- Intent getIntent=getIntent();
- int openMode=getIntent.getIntExtra("mode",0);
- id=getIntent.getLongExtra("id",0);
- //点击的是一个已经写好的笔记
- if(openMode==3){
- old_content = getIntent.getStringExtra("content");
- old_time=getIntent.getStringExtra("time");
- old_Tag=getIntent.getIntExtra("tag",1);
- editText.setText(old_content);
- //设置光标的位置,在文本最后
- editText.setSelection(old_content.length());
- }
-
- bt.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- autoSetMessage();
- setResult(RESULT_OK,intent);
- //结束该进程活动
- finish();
- }
-
- public void autoSetMessage(){
- //新建一个笔记
- if(openMode==4){
- if(editText.getText().toString().length()==0){
- intent.putExtra("mode",-1);//没有输入内容
- }
- else{
- intent.putExtra("mode",0);//新建一个笔记
- intent.putExtra("content",editText.getText().toString());
- intent.putExtra("time",dateToStr());
- }
- }
- //打开已有笔记
- else{
- if(editText.getText().toString().equals(old_content)){
- intent.putExtra("mode",-1);//没有改变笔记内容
- }
- else{
- intent.putExtra("mode",1);//修改笔记内容
- intent.putExtra("content",editText.getText().toString());
- intent.putExtra("time",dateToStr());
- intent.putExtra("id",id);
- }
-
- }
- }
- });
- }
- //将时间记录转变成想要的格式
- public String dateToStr(){
- Date date =new Date();
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- return simpleDateFormat.format(date);
- }
- }
通过webview设置网页显示的位置,在webActivity中定义WebSettings,加载网页链接,返回网页数据.
网络访问后端逻辑:
- package com.example.myapplication6;
-
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.View;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.webkit.WebViewClient;
- import android.widget.Button;
-
- import androidx.appcompat.app.AppCompatActivity;
-
- public class WebvisitActivity extends AppCompatActivity {
-
- Button bt;
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.webview);
- bt=findViewById(R.id.back);
- WebView web=findViewById(R.id.web);
-
- /*开启DOM存储API权限,并允许执行JS*/
- WebSettings webSettings=web.getSettings();
- webSettings.setDomStorageEnabled(true);
- webSettings.setJavaScriptEnabled(true);
-
- /*打开网页时不调用系统浏览器,而是在本WebView中显示*/
- web.setWebViewClient(new WebViewClient());
- web.loadUrl("https://m.baidu.com/sf?county_id=101250101&dspName=iphone&ext=%7B%22bar_sort%22%3A%22chuanyi%2Cchuyou%2Cxiche%2Cganmao%2C%22%2C%22sf_tab_name%22%3A%22chuanyi%22%7D&from_sf=1&fromapp=vsgo&openapi=1&pd=life_compare_weather&resource_id=4599&title=%E7%94%9F%E6%B4%BB%E6%B0%94%E8%B1%A1%E6%8C%87%E6%95%B0&word=%E9%95%BF%E6%B2%99&fromSite=pc");//加载网页
-
- bt.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Intent intent=new Intent();
- finish();
- }
- });
-
- }
- }
项目目前还有很多有待完善的地方,如将用户注册登录的数据用SQLite存储会更加合理,即用户不需要返回应用加载页面,且用户可以用多个账户登录
在功能方面也还有待完善的地方,如单个记事的删除等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。