Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
整体实现效果展示
智能家居系统
页面一
1.实现效果
用户进行注册(后登录),通过数据库存储数据用户的账号和密码。
点击记住密码保存账号和密码信息。
同时注册界面实现淡入淡出的动画效果。
2.数据库代码
数据库存储核心代码:
//数据库的创建和更新(删除)@Overridepublic void onCreate(SQLiteDatabase db) {String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS + "("+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"+ KEY_USERNAME + " TEXT UNIQUE,"+ KEY_PASSWORD + " TEXT" + ")";db.execSQL(CREATE_USERS_TABLE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);onCreate(db);}
3.登录代码
登录界面核心代码:
//与数据库进行核对(核对账号和密码)if (databaseHelper.checkUser(username, password)) {//检查是否勾选来保存信息(将信息保存到sharedPreferences中用于转动填充)if (rememberPasswordCheckBox.isChecked()) {SharedPreferences.Editor editor = sharedPreferences.edit();editor.putBoolean("remember", true);editor.putString("username", username);editor.putString("password", password);editor.apply();} else {SharedPreferences.Editor editor = sharedPreferences.edit();editor.clear();editor.apply();}//退出动画(登录动画效果与进入动画一致)Animation slideDown = AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_down);loginContainer.startAnimation(slideDown);//监听处理动画是否结束slideDown.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束后跳转到MainActivity2Intent intent = new Intent(MainActivity.this, MainActivity2.class);intent.putExtra("username", username);startActivity(intent);finish();}@Overridepublic void onAnimationRepeat(Animation animation) {}});} else {Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();}
4.动画代码
动画效果核心代码:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true">
<!-- 动画结束后保持最终状态--><translateandroid:duration="1500"android:fromYDelta="100%"android:toYDelta="0%"/><alphaandroid:duration="1500"android:fromAlpha="0.0"android:toAlpha="1.0"/>
</set>
页面二
1.实现效果
通过数据库将注册的账号和密码进行存储。
2.注册代码
registerButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String username = regUsernameEditText.getText().toString().trim();String password = regPasswordEditText.getText().toString().trim();if (username.isEmpty() || password.isEmpty()) {Toast.makeText(MainActivity3.this, "用户名和密码不能为空", Toast.LENGTH_SHORT).show();return;}if (databaseHelper.userExists(username)) {Toast.makeText(MainActivity3.this, "用户名已存在", Toast.LENGTH_SHORT).show();return;}if (databaseHelper.addUser(username, password)) {Toast.makeText(MainActivity3.this, "注册成功", Toast.LENGTH_SHORT).show();finish();} else {Toast.makeText(MainActivity3.this, "注册失败", Toast.LENGTH_SHORT).show();}}});
页面三
1.实现效果
开启灯光/风扇。
添加设备,实现设备插入到当前页。
点击设备选购,跳转到淘宝页面。
点击问卷调查,实现问卷调查题目,整合后可实现短信发送。
2.开启灯光/风扇
//开关灯private void toggleLight() {isLightOn = !isLightOn;int colorFrom = isLightOn ? 0xFF9E9E9E : 0xFFFFD600;int colorTo = isLightOn ? 0xFFFFD600 : 0xFF9E9E9E;ObjectAnimator colorAnim = ObjectAnimator.ofObject(lightIcon, "colorFilter",new ArgbEvaluator(), colorFrom, colorTo);colorAnim.setDuration(300);colorAnim.start();lightButton.setText(isLightOn ? "关闭灯光" : "开启灯光");}//开关风扇private void toggleFan() {isFanOn = !isFanOn;if (isFanOn) {fanIcon.startAnimation(fanRotation);fanButton.setText("关闭风扇");} else {fanIcon.clearAnimation();fanButton.setText("开启风扇");}}
3.添加设备接收
添加设备接收处理
//处理返回数据
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 100 && resultCode == RESULT_OK && data != null) {String deviceName = data.getStringExtra("deviceName");int imageResId = data.getIntExtra("imageResId", R.drawable.photo_home);addNewDeviceCard(deviceName, imageResId);}if (requestCode == 200 && resultCode == RESULT_OK && data != null) {String surveyResult = data.getStringExtra("surveyResult");showSmsDialog(surveyResult);}}
4.淘宝跳转
//跳转到淘宝private void openTaobao() {try {//尝试打开淘宝应用//创建一个隐式 Intent,通过 ACTION_VIEW 动作和淘宝的协议链接 taobao://s.taobao.com 尝试唤起淘宝应用Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("taobao://s.taobao.com"));startActivity(intent);} catch (ActivityNotFoundException e) {try {//如果淘宝应用未安装,跳转到应用商店下载页面Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.taobao.taobao"));startActivity(intent);} catch (Exception ex) {//如果应用商店也无法打开,提示用户检查网络或手动下载Toast.makeText(this, "无法打开淘宝应用。请检查网络连接或手动前往应用商店下载。", Toast.LENGTH_LONG).show();}}}
5.问卷调查
采用AlterDialog.Builder构建数据。
private void showSmsDialog(String surveyResult) {//实例化一个AlertDialog.Builder对象,用于构建对话框AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("问卷调查结果");builder.setMessage("即将发送问卷结果:\n\n" + surveyResult);builder.setPositiveButton("发送短信", (dialog, which) -> {Intent smsIntent = new Intent(Intent.ACTION_VIEW);//设置短信URI:使用smsto协议指定这是一个短信意图smsIntent.setData(Uri.parse("smsto:"));//将问卷调查结果加到Intent中smsIntent.putExtra("sms_body", surveyResult);//启动短信startActivity(smsIntent);});builder.setNegativeButton("取消", null);builder.show();}
页面四
1.实现效果
设备添加到上一页中
2.添加设备发送
//返回按钮(销毁当前页面)backButton.setOnClickListener(v -> finish());//图片切换deviceImage.setOnClickListener(v -> {currentImageIndex = (currentImageIndex + 1) % deviceImages.length;deviceImage.setImageResource(deviceImages[currentImageIndex]);});//添加设备按钮packButton.setOnClickListener(v -> {String deviceName = deviceNameInput.getText().toString().trim();if (deviceName.isEmpty()) {Toast.makeText(this, "请输入设备名称", Toast.LENGTH_SHORT).show();return;}//返回数据到MainActivity2Intent resultIntent = new Intent();resultIntent.putExtra("deviceName", deviceName);resultIntent.putExtra("imageResId", deviceImages[currentImageIndex]);setResult(RESULT_OK, resultIntent);finish();});
页面五
1.实现效果
将问卷调查信息发送到AlterDialog.Builder中。
2.问卷内容
// 处理使用场景多选StringBuilder usageTypes = new StringBuilder();if (lightingCheck.isChecked()) usageTypes.append("智能灯光, ");if (securityCheck.isChecked()) usageTypes.append("安防系统, ");if (comfortCheck.isChecked()) usageTypes.append("舒适控制, ");if (energyCheck.isChecked()) usageTypes.append("节能管理, ");if (otherCheck.isChecked()) usageTypes.append("其他");String feedback = feedbackEditText.getText().toString();// 构建结果字符串String result = "智能家居使用情况调查结果:\n\n" +"年龄: " + age + "\n" +"使用频率: " + frequency + "\n" +"满意度: " + satisfaction + "\n" +"使用场景: " + usageTypes.toString() + "\n" +"意见建议: " + feedback;// 返回结果Intent resultIntent = new Intent();resultIntent.putExtra("surveyResult", result);setResult(RESULT_OK, resultIntent);finish();}private String getSelectedFrequency() {int selectedId = frequencyGroup.getCheckedRadioButtonId();if (selectedId == R.id.dailyRadio) {return "每天";} else if (selectedId == R.id.weeklyRadio) {return "每周";} else if (selectedId == R.id.monthlyRadio) {return "每月";} else if (selectedId == R.id.rarelyRadio) {return "很少";}return "未选择";}private String getSelectedSatisfaction() {int selectedId = satisfactionGroup.getCheckedRadioButtonId();if (selectedId == R.id.verySatisfiedRadio) {return "非常满意";} else if (selectedId == R.id.satisfiedRadio) {return "满意";} else if (selectedId == R.id.neutralRadio) {return "一般";} else if (selectedId == R.id.unsatisfiedRadio) {return "不满意";}return "未选择";}
感谢各位读者的阅读!希望大家给出一键三连,多多支持原创。有错误和不解的地方,欢迎各位读者在评论区讨论,我也会不断学习不断改进,做出更加优质的作品!!!
相关资源获取WX搜索:JannineSpr