Android-studio
-
LinearLayout 线性布局
-
orientation 方向
-
layout_weight:权重,当layout_weight设置为0dp时,他可以按比例设置元件的宽度(水平)
-
gravity:设置文本在容器中的位置
-
layout_gravity:设置容器在窗口中的位置
-
background:设置背景色
-
text_color:文本颜色
-
layout_margin:边距
1.layout_marginLeft 在容器文本的左边填充距离
- layout_marginBottom 在容器文本的下面填充距离
- layout_marginTop 在容器文本的上方填充距离
- layout_marginRight 在容器文本的右边填充距离
-
-
RelativeLayout 相对布局
- layout_alignParentTop=“true” 在父容器的顶部
- layout_centerHorizontal=“true” 水平居中
- textSize=“16dp”
- 绝对位置
- android:layout_alignParentBottom=“true” 在窗口下方
- android:layout_alignParentLeft=“true” 在窗口左边
- android:layout_alignParentRight=“true” 在窗口右边
- android:layout_centerInParent=“true” 在窗口正中
- layout_centerHorizontal=“true” 水平居中
- layout_centerVertical=“true” 垂直居中
- 相对位置
- android:layout_below="@id" 在指定元件下方
- android:layout_above="@id" 在指定元件上方
- android:layout_toRightOf="@id" 在指定元件右方
- android:layout_toLeftOf="@id" 在指定元件左方
-
ScrollView 滚动视图
按钮的选择与跳转
- CheckBox 复选框
布局
主布局(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!-- <TextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Hello World!"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
<!-- app:layout_constraintLeft_toLeftOf="parent"-->
<!-- app:layout_constraintRight_toRightOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent" />-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb_1"
android:text="黑丝"></CheckBox>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb_2"
android:text="白丝"></CheckBox>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cb_3"
android:text="渔网"></CheckBox>
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择"
android:id="@+id/btn_ok"
></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:id="@+id/btn_no"></Button>
<!-- <DatePicker-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:id="@+id/dp"></DatePicker>-->
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/lv_1"/>
</LinearLayout>
</ScrollView>
跳转视图(activity_main2.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2"
android:orientation="vertical">
<!--<CheckBox-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:id="@+id/m1"/>-->
<!-- <CheckBox-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:id="@+id/m2"/>-->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="白丝"
android:id="@+id/rb_1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="黑丝"
android:id="@+id/rb_2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="想选点击"
android:id="@+id/jump2"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pt_1"
android:src="@drawable/mei"/>
</LinearLayout>
配置文件java
主布局配置(Mainactivity.java)
public class MainActivity extends AppCompatActivity{
CheckBox cb_1;
CheckBox cb_2;
CheckBox cb_3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cb_1 = (CheckBox) findViewById(R.id.cb_1);
cb_2 = (CheckBox) findViewById(R.id.cb_2);
cb_3 = (CheckBox) findViewById(R.id.cb_3);
Button btn1 = (Button) findViewById(R.id.btn_ok);
btn1.setOnClickListener(new myClick());
Button btn2 = (Button) findViewById(R.id.btn_no);
btn2.setOnClickListener(new myClick());
String []strs={"张三","李四","王五"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,strs);
ListView lv=findViewById(R.id.lv_1);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// Toast.makeText(MainActivity.this,"pos:""position",Toast.LENGTH_LONG).show();
}
});
// 1种
// @Override
// public void onClick(View view) {
// Toast.makeText(MainActivity.this, "不选也得选", Toast.LENGTH_SHORT).show();
// }
// });
// DatePicker dp=(DatePicker)findViewById(R.id.dp);
// dp.setOnDateChangedListener(new);
// btn1.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// String str_hobby = "您的爱好是:";
// if (cb_1.isChecked()) str_hobby += "黑丝";
// if (cb_2.isChecked()) str_hobby += "白丝";
// if (cb_3.isChecked()) str_hobby += "渔网";
// Toast.makeText(MainActivity.this, str_hobby, Toast.LENGTH_LONG).show();
// }
// });
}
// 2种
class myClick implements View.OnClickListener{
@Override
public void onClick(View v){
int id=v.getId();
switch (id){
case R.id.btn_ok:
String str_hobby = "您的爱好是:";
if (cb_1.isChecked()) str_hobby += "黑丝";
if (cb_2.isChecked()) str_hobby += "白丝";
if (cb_3.isChecked()) str_hobby += "渔网";
Toast.makeText(MainActivity.this, str_hobby, Toast.LENGTH_LONG).show()
;break;
case R.id.btn_no:
Toast.makeText(MainActivity.this, "不选就看", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
startActivityForResult(intent,1);break;
}
}
}
}
跳转页面配置(Mainactivity2.java)
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.rb_1);
Button btn2 = (Button) findViewById(R.id.rb_2);
Button btn3 = (Button) findViewById(R.id.jump2);
btn1.setOnClickListener(new myClick());
btn2.setOnClickListener(new myClick());
btn3.setOnClickListener(new myClick());
}
class myClick implements View.OnClickListener {
@Override
public void onClick(View v) {
ImageView iv= (ImageView) findViewById(R.id.pt_1);
switch (v.getId()) {
case R.id.rb_1:iv.setImageResource(R.drawable.mei2);break;
case R.id.rb_2:iv.setImageResource(R.drawable.mei3);break;
case R.id.jump2:
Intent intent = new Intent(MainActivity2.this, MainActivity.class);
startActivityForResult(intent,1);break;
}
}
}
}
计算器
布局(activity_main_xml)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
tools:context=".MainActivity">
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity"
android:orientation="horizontal"
android:columnCount="4"
android:rowCount="6"
android:paddingBottom="15dp">
<TextView
android:text="0"
android:layout_height="100dp"
android:layout_gravity="fill"
android:layout_columnSpan="4"
android:textSize="50sp"
android:gravity="right|bottom"
android:background="#ffcccc"
android:id="@+id/text_1"
></TextView>
<Button
android:text="回退"
android:layout_gravity="fill"
android:layout_columnSpan="2"
android:id="@+id/btn_back"/>
<Button
android:text="清空"
android:layout_gravity="fill"
android:layout_columnSpan="2"
android:id="@+id/btn_ac"/>
<Button
android:text="1"
android:textSize="15sp"
android:id="@+id/btn_1"/>
<Button
android:text="2"
android:textSize="15sp"
android:id="@+id/btn_2"/>
<Button
android:text="3"
android:textSize="15sp"
android:id="@+id/btn_3"/>
<Button
android:text="+"
android:textSize="15sp"
android:hint="50px"
android:id="@+id/btn_add"/>
<Button
android:text="4"
android:textSize="15sp"
android:id="@+id/btn_4"/>
<Button
android:text="5"
android:textSize="15sp"
android:id="@+id/btn_5"/>
<Button
android:text="6"
android:textSize="15sp"
android:id="@+id/btn_6"/>
<Button
android:text="-"
android:textSize="15sp"
android:id="@+id/btn_sub"/>
<Button
android:text="7"
android:textSize="15sp"
android:id="@+id/btn_7"/>
<Button
android:text="8"
android:textSize="15sp"
android:id="@+id/btn_8"/>
<Button
android:text="9"
android:textSize="15sp"
android:id="@+id/btn_9"/>
<Button
android:text="/"
android:textSize="15sp"
android:id="@+id/btn_chu"/>
<Button
android:text="*"
android:textSize="15sp"
android:id="@+id/btn_cheng"/>
<Button
android:text="0"
android:textSize="15sp"
android:id="@+id/btn_0"/>
<Button
android:text="."
android:textSize="15sp"
android:id="@+id/btn_dot"/>
<Button
android:text="="
android:textSize="15sp"
android:id="@+id/btn_equal"/>
</GridLayout>
</RelativeLayout>
配置文件(MainActivity.java)
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String op;
Double op1,op2,result;
boolean flag=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_1=(Button) findViewById(R.id.btn_1);
Button btn_2=(Button) findViewById(R.id.btn_2);
Button btn_3=(Button) findViewById(R.id.btn_3);
Button btn_4=(Button) findViewById(R.id.btn_4);
Button btn_5=(Button) findViewById(R.id.btn_5);
Button btn_6=(Button) findViewById(R.id.btn_6);
Button btn_7=(Button) findViewById(R.id.btn_7);
Button btn_8=(Button) findViewById(R.id.btn_8);
Button btn_9=(Button) findViewById(R.id.btn_9);
Button btn_0=(Button) findViewById(R.id.btn_0);
Button btn_ac=(Button) findViewById(R.id.btn_ac);
Button btn_back=(Button) findViewById(R.id.btn_back);
Button btn_add=(Button) findViewById(R.id.btn_add);
Button btn_cheng=(Button) findViewById(R.id.btn_cheng);
Button btn_chu=(Button) findViewById(R.id.btn_chu);
Button btn_sub=(Button) findViewById(R.id.btn_sub);
Button btn_dot=(Button) findViewById(R.id.btn_dot);
Button btn_equal=(Button) findViewById(R.id.btn_equal);
btn_1.setOnClickListener(new myClick());
btn_2.setOnClickListener(new myClick());
btn_3.setOnClickListener(new myClick());
btn_4.setOnClickListener(new myClick());
btn_5.setOnClickListener(new myClick());
btn_6.setOnClickListener(new myClick());
btn_7.setOnClickListener(new myClick());
btn_8.setOnClickListener(new myClick());
btn_9.setOnClickListener(new myClick());
btn_0.setOnClickListener(new myClick());
btn_ac.setOnClickListener(new myClick());
btn_back.setOnClickListener(new myClick());
btn_add.setOnClickListener(new myClick());
btn_cheng.setOnClickListener(new myClick());
btn_chu.setOnClickListener(new myClick());
btn_dot.setOnClickListener(new myClick());
btn_equal.setOnClickListener(new myClick());
btn_sub.setOnClickListener(new myClick());
}
class myClick implements View.OnClickListener{
@Override
public void onClick(View v){
TextView tv=(TextView) findViewById(R.id.text_1);
String str=tv.getText().toString();
switch (v.getId()){
case R.id.btn_ac:tv.setText("0");break;
case R.id.btn_back:
if(str.length()==1)
{
tv.setText("0");
}
else{
tv.setText(str.substring(0,str.length()-1));
}
;break;
case R.id.btn_1:
case R.id.btn_2:
case R.id.btn_3:
case R.id.btn_4:
case R.id.btn_5:
case R.id.btn_6:
case R.id.btn_7:
case R.id.btn_8:
case R.id.btn_9:
case R.id.btn_0:
Button btn=(Button)findViewById(v.getId());
String btn_text=btn.getText().toString();
if(!str.equals("0")&&!flag)
tv.setText(str+btn_text);
else
tv.setText(btn_text);
flag=false;
break;
case R.id.btn_dot:
tv.setText(str+".");
if(!str.contains("."))
break;
case R.id.btn_add:
case R.id.btn_cheng:
case R.id.btn_chu:
case R.id.btn_sub:
Button btn2=(Button) findViewById(v.getId());
op=btn2.getText().toString();
op1=Double.parseDouble(str);
flag=true;
break;
case R.id.btn_equal:
op2=Double.parseDouble(str);
switch (op){
case "+":result=op1+op2; break;
case "-":result=op1-op2; break;
case "*":result=op1*op2; break;
case "/":
if(op2!=0.0)result=op1/op2;
else {result=0.0;}break;
}
tv.setText(String.valueOf(result));
}
}
}
}
布局中元素位置应用
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮一"
android:layout_centerInParent="true"
android:id="@+id/btn_jump"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮二"
android:layout_alignParentLeft="true"
></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮三"
android:layout_alignParentRight="true"></Button>
<Button
android:text="按钮四"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"></Button>
<Button
android:text="按钮五"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentLeft="true"
android:text="按钮六"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentRight="true"
android:text="按钮七"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_jump"
android:layout_centerHorizontal="true"
android:text="按钮八"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/btn_jump"
android:layout_centerHorizontal="true"
android:text="按钮九"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn_jump"
android:layout_centerVertical="true"
android:text="按钮十"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_jump"
android:layout_centerVertical="true"
android:text="按钮十一"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn_jump"
android:layout_above="@+id/btn_jump"
android:text="按钮十二"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btn_jump"
android:layout_below="@+id/btn_jump"
android:text="按钮十三"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_jump"
android:layout_above="@+id/btn_jump"
android:text="按钮十四"></Button>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/btn_jump"
android:layout_below="@+id/btn_jump"
android:text="按钮十五"></Button>
<Button
android:text="按钮十六"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"></Button>
<Button
android:text="按钮十七"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn_jump"
></Button>
拍照
布局xml
activity_main_xml(layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:id="@+id/btn_photo"
tools:ignore="MissingConstraints"></Button>
</LinearLayout>
activity_take_photo.xml(layout)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TakePhotoActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/img_picture"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍照"
android:id="@+id/btn_takePhoto"/>
</LinearLayout>
file_paths.xml(xml)
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="my_images"
path="."/>
</paths>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mainfest.myapplication" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication" >
<activity
android:name=".TakePhotoActivity"
android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.mainfest.myapplication.MainActivity.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>
配置文件java
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_photo =(Button) findViewById(R.id.btn_photo);
btn_photo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,TakePhotoActivity.class);
startActivity(intent);
}
});
}
}
activity_take_photo.java
package com.example.mainfest.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TakePhotoActivity extends AppCompatActivity {
final int TAKE_PHOTO = 1;
ImageView img;
Uri imageUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_take_photo);
Button btn_takePhoto = (Button) findViewById(R.id.btn_takePhoto);
img = (ImageView) findViewById(R.id.img_picture);
btn_takePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
File outputImage = new File(getExternalCacheDir(), "output_image.jpg");
try {
if (outputImage.exists())
outputImage.delete();
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24)
imageUri = FileProvider.getUriForFile(TakePhotoActivity.this, "com.example.mainfest.myapplication.MainActivity.fileprovider", outputImage);
else
imageUri = Uri.fromFile(outputImage);
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, TAKE_PHOTO);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
img.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
break;
default:
break;
}
}
}
元素增删改(水果为例)
布局
主布局(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:id="@+id/lv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<ImageButton
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="right"
android:background="@drawable/add"
android:id="@+id/imgbtn_add"/>
</LinearLayout>
添加和修改界面布局(activity_edit_and_add.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".EditAndAddActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_fruit_name"
android:hint="请输入水果名称"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minLines="3"
android:id="@+id/et_fruit_intr"
android:hint="请输入水果的介绍"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交"
android:id="@+id/btn_submit"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:id="@+id/btn_cancle"/>
</LinearLayout>
显示布局(fruit_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ListView
android:id="@+id/lv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<ImageButton
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="right"
android:background="@drawable/add"
android:id="@+id/imgbtn_add"/>
</LinearLayout>
配置文件java
MainActivity.java
public class MainActivity extends AppCompatActivity {
List<Fruit> fruitsList = new ArrayList<>();
FruitAdapter adapter;
int pos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initFruits();
adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitsList);
ListView listView = (ListView) findViewById(R.id.lv_1);
listView.setAdapter(adapter);
ImageButton ib_1 = (ImageButton)findViewById(R.id.imgbtn_add);
ib_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,EditAndAddActivity.class);
startActivityForResult(intent,1);
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Fruit fruit=fruitsList.get(position);
Intent intent = new Intent(MainActivity.this,EditAndAddActivity.class);
intent.putExtra("fruitName",fruit.getName());
intent.putExtra("fruitIntr",fruit.getIntr());
intent.putExtra("fruitPosition",position);
startActivityForResult(intent,2);
pos=position;
// Toast.makeText(MainActivity.this,"你点击了:"+fruit.getName(),Toast.LENGTH_SHORT).show();
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) {
Fruit fruit=fruitsList.get(position);
AlertDialog.Builder alert=new AlertDialog.Builder(MainActivity.this);
alert.setTitle("确认删除").setMessage("是否确认删除"+fruit.getName()+"?");
alert.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
fruitsList.remove(position);
adapter.notifyDataSetChanged();
}
});
alert.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
dissmiss();
}
private void dissmiss() {
}
});
alert.show();
return false;
}
});
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 1: //从添加按钮返回
if (resultCode==RESULT_OK){
String str_fruitName=data.getStringExtra("fruitName");
String str_fruitIntr=data.getStringExtra("fruitIntr");
Fruit fruit = new Fruit(str_fruitName,R.drawable.china,str_fruitIntr);
fruitsList.add(fruit);
adapter.notifyDataSetChanged();
}break;
case 2: //从编辑返回
if (resultCode==RESULT_OK){
String str_fruitName=data.getStringExtra("fruitName");
String str_fruitIntr=data.getStringExtra("fruitIntr");
Fruit fruit=new Fruit(str_fruitName,R.drawable.add,str_fruitIntr);
fruitsList.set(pos,fruit);
adapter.notifyDataSetChanged();
}
}
}
void initFruits() {
for (int i = 0; i < 1; i++) {
Fruit apple = new Fruit("北京", R.drawable.biejing,"首都");
fruitsList.add(apple);
Fruit banana = new Fruit("上海", R.drawable.shanghai,"上海");
fruitsList.add(banana);
Fruit orange = new Fruit("成都", R.drawable.chengdu,"美女");
fruitsList.add(orange);
Fruit watermelon = new Fruit("西安", R.drawable.xian,"兵马俑");
fruitsList.add(watermelon);
Fruit pear = new Fruit("天津", R.drawable.tianjin,"相声");
fruitsList.add(pear);
Fruit grape = new Fruit("云南", R.drawable.yunnan,"少数名族");
fruitsList.add(grape);
Fruit pineapple = new Fruit("江苏", R.drawable.jiangsu,"我也不知道");
fruitsList.add(pineapple);
Fruit cherry = new Fruit("南京", R.drawable.nanjing,"嘤嘤嘤,好凶凶");
fruitsList.add(cherry);
Fruit mango = new Fruit("浙江", R.drawable.zhejiang,"景色美");
fruitsList.add(mango);
}
}
}
EditAndAddActivity.java
public class EditAndAddActivity extends AppCompatActivity {
Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_and_add);
EditText et_fruitName = (EditText) findViewById(R.id.et_fruit_name);
EditText et_fruitIntr = (EditText) findViewById(R.id.et_fruit_intr);
Button btn_submit =(Button) findViewById(R.id.btn_submit);
Button btn_cancle =(Button) findViewById(R.id.btn_cancle);
intent =getIntent();
et_fruitName.setText(intent.getStringExtra("fruitName"));
et_fruitIntr.setText(intent.getStringExtra("fruitIntr"));
final int pos=intent.getIntExtra("fruitPosition",0);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str_fruitName=et_fruitName.getText().toString();
String str_fruitIntr=et_fruitIntr.getText().toString();
if (str_fruitName.isEmpty()||str_fruitIntr.isEmpty()){
setResult(RESULT_CANCELED);
finish();
}
else {
intent.putExtra("fruitName",str_fruitName);
intent.putExtra("fruitIntr",str_fruitIntr);
intent.putExtra("fruitPosition",pos);
setResult(RESULT_OK,intent);
finish();
}
}
});
btn_cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(EditAndAddActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
}
Fruit.java
public class Fruit {
String name;
int imgId;
String intr;
public Fruit (String name,int imgId,String intr){
this.name=name;
this.imgId=imgId;
this.intr=intr;
}
String getName(){
return name;
}
int getImgId(){
return imgId;
}
String getIntr(){
return intr;
}
}
FruitAdapter.java
public class FruitAdapter extends ArrayAdapter<Fruit> {
int resourceId;
public FruitAdapter(Context context, int resource, List<Fruit> objects){
super(context,resource,objects);
resourceId=resource;
}
@Override
public View getView(int position, View conertView, ViewGroup parenet){
Fruit fruit=getItem(position);
View view= LayoutInflater.from(getContext()).inflate(resourceId,parenet,false);
ImageView imageView=(ImageView)view.findViewById(R.id.img_fruit);
TextView tv_fruitName=(TextView) view.findViewById(R.id.tv_FruitName);
TextView tv_fruitIntr=(TextView) view.findViewById(R.id.tv_FruitIntr) ;
tv_fruitIntr.setText(fruit.intr);
imageView.setImageResource(fruit.getImgId());
tv_fruitName.setText(fruit.getName());
return view;
}
}
数据库
数据库的增删改查
布局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建表"
android:id="@+id/btn_create"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="插入数据"
android:id="@+id/btn_insert"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改数据"
android:id="@+id/btn_update"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据"
android:id="@+id/btn_delete"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示数据"
android:id="@+id/btn_show"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询"
android:id="@+id/btn_query"></Button>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入修改后的内容"
android:id="@+id/et_newContent"></EditText>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入内容"
android:id="@+id/et_content"></EditText>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_show"></TextView>
</LinearLayout>
配置
DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
final String CREATE_TABLE1="create table Text(_id integer primary key autoincrement,content text)";
Context context;
public DBHelper(Context context,String dbname,int version){
super(context,dbname,null,version);
this.context=context;
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_TABLE1);
Toast.makeText(context,"创建成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL("drop table if exists Test");
onCreate(db);
}
public void insert(ContentValues values){
SQLiteDatabase db=getWritableDatabase();
db.insert("Text",null,values);
db.close();
Toast.makeText(context,"插入数据成功",Toast.LENGTH_SHORT).show();
}
public Cursor queryAll(){
SQLiteDatabase db=getWritableDatabase();
Cursor cursor=db.query("Text",null,null,null,null,null,null);
return cursor;
}
public Cursor query(String str){
SQLiteDatabase db=getWritableDatabase();
Cursor cursor=db.query("Text",null,"content=?",new String[]{str},null,null,null);
// Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
return cursor;
}
public void delete(String str){
SQLiteDatabase db=getWritableDatabase();
db.delete("Text","content=?",new String[]{str});
db.close();
}
public void update(String str_old,ContentValues values_new){
SQLiteDatabase db=getWritableDatabase();
db.update("Text",values_new,"content=?",new String[]{str_old});
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
DBHelper dbHelper=new DBHelper(MainActivity.this,"MyTextDatabase.db",1);
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_create=(Button) findViewById(R.id.btn_create);
Button btn_insert=(Button) findViewById(R.id.btn_insert);
Button btn_show=(Button) findViewById(R.id.btn_show);
Button btn_detele=(Button) findViewById(R.id.btn_delete);
Button btn_update=(Button) findViewById(R.id.btn_update);
Button btn_query=(Button) findViewById(R.id.btn_query);
btn_create.setOnClickListener(new MyClick());
btn_insert.setOnClickListener(new MyClick());
btn_show.setOnClickListener(new MyClick());
btn_detele.setOnClickListener(new MyClick());
btn_update.setOnClickListener(new MyClick());
btn_query.setOnClickListener(new MyClick());
editText=(EditText) findViewById(R.id.et_content);
}
class MyClick implements View.OnClickListener{
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.btn_create:
dbHelper.getWritableDatabase();
break;
case R.id.btn_insert:
String str=editText.getText().toString();
ContentValues contentValues=new ContentValues();
contentValues.put("content",str);
dbHelper.insert(contentValues);
show();
break;
case R.id.btn_show:
show();
break;
case R.id.btn_delete:
str=editText.getText().toString();
dbHelper.delete(str);
break;
case R.id.btn_update:
str=editText.getText().toString();
EditText et_new_content=(EditText) findViewById(R.id.et_newContent);
String str_new=et_new_content.getText().toString();
ContentValues contentValues1 =new ContentValues();
contentValues1.put("content",str_new);
dbHelper.update(str,contentValues1);
break;
case R.id.btn_query:
str=editText.getText().toString();
Cursor cursor=dbHelper.query(str);
String str2="id content\n";
if (cursor.moveToFirst())
do {
str2+=cursor.getString(0)+" ";
str2+=cursor.getString(1)+"\n";
}while (cursor.moveToNext());
TextView textView=(TextView) findViewById(R.id.tv_show);
textView.setText(str2);
break;
}
}
}
public void show(){
Cursor cursor=dbHelper.queryAll();
String str="id content\n";
if (cursor.moveToFirst())
do {
str+=cursor.getString(0)+" ";
str+=cursor.getString(1)+"\n";
}while (cursor.moveToNext());
TextView textView=(TextView) findViewById(R.id.tv_show);
textView.setText(str);
}
}
注册登录和数据增删改查
布局
登录页面(activity_login.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".LoginActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:id="@+id/et_username_login"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword"
android:id="@+id/et_password_login"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录"
android:id="@+id/btn_login"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
android:id="@+id/btn_register"></Button>
</LinearLayout>
主页(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_view"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="新建"
android:id="@+id/btn_new_note"/>
</LinearLayout>
注册界面(activity_register.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".RegisterActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:id="@+id/et_username_register"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:inputType="textPassword"
android:id="@+id/et_password_register"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="确认密码"
android:inputType="textPassword"
android:id="@+id/et_password_confirm"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
android:id="@+id/btn_ok"></Button>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:id="@+id/btn_cancel"></Button>
</LinearLayout>
添加修改数据界面(activity_new_notes.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".NewNotesActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入标题"
android:id="@+id/et_title">
</EditText>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入内容"
android:id="@+id/et_content"></EditText>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交"
android:id="@+id/btn_submit"></Button>
</LinearLayout>
新数据库信息界面(listview_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:textColor="#55A1F3"
android:id="@+id/tv_id"></TextView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:paddingLeft="30px"
android:id="@+id/tv_title">
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10pt"
android:paddingLeft="30px"
android:id="@+id/tv_time"></TextView>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="5pt"
android:layout_marginLeft="200px"
android:id="@+id/tv_content"></TextView>
</LinearLayout>
配置
MainActivity
public class MainActivity extends AppCompatActivity {
DBHelper dbHelper=new DBHelper(MainActivity.this,"MyDatabase.db",2);
ListView listView;
final int NEW_NOTE=1;
final int EDIT_NOTE=2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(ListView) findViewById(R.id.list_view);
renderListView();
Button btn_new=(Button) findViewById(R.id.btn_new_note);
btn_new.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,NewNotesActivity.class);
startActivityForResult(intent,NEW_NOTE);
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long id) {
Cursor cursor= (Cursor) listView.getItemAtPosition(i);
@SuppressLint("Range") String title=cursor.getString(cursor.getColumnIndex("title"));
@SuppressLint("Range") String content=cursor.getString(cursor.getColumnIndex("content"));
Intent intent = new Intent(MainActivity.this,NewNotesActivity.class);
intent.putExtra("title",title);
intent.putExtra("content",content);
startActivityForResult(intent,EDIT_NOTE);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Cursor cursor=(Cursor) listView.getItemAtPosition(i);
@SuppressLint("Range") String title=cursor.getString(cursor.getColumnIndex("title"));
AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
builder.setTitle("删除数据·").setMessage("确认删除"+title+"?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dbHelper.deleteNotes(title);
renderListView();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
return true;
}
});
}
protected void renderListView(){
dbHelper.getWritableDatabase();
Cursor cursor=dbHelper.queryAll("Notes");
String from[]=new String[]{"_id","title","content","time"};
int to[]=new int[]{R.id.tv_id,R.id.tv_title,R.id.tv_time,R.id.tv_content};
SimpleCursorAdapter adapter=new SimpleCursorAdapter(MainActivity.this,R.layout.listview_item,cursor,from,to,0);
listView.setAdapter(adapter);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent intent){
super.onActivityResult(requestCode,resultCode,intent);
if (resultCode==RESULT_OK){
String title=intent.getStringExtra("title");
String content=intent.getStringExtra("content");
String old_title=intent.getStringExtra("old_title");
// String id=intent.getStringExtra("id");
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date=new Date(System.currentTimeMillis());
String time=simpleDateFormat.format(date);
ContentValues values=new ContentValues();
values.put("title",title);
values.put("content",content);
values.put("time",time);
switch (requestCode){
case NEW_NOTE:
dbHelper.insertNotes(values);
break;
case EDIT_NOTE:
dbHelper.updateNotes(old_title,values);
break;
}
}
renderListView();
}
}
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
DBHelper dbHelper=new DBHelper(LoginActivity.this,"MyDatabase.db",2);
EditText et_username;
EditText et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
et_username=(EditText) findViewById(R.id.et_username_login);
et_password=(EditText) findViewById(R.id.et_password_login);
Button btn_login=(Button) findViewById(R.id.btn_login);
Button btn_register=(Button) findViewById(R.id.btn_register);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username=et_username.getText().toString();
String password=et_password.getText().toString();
if (username.isEmpty()||password.isEmpty())
Toast.makeText(LoginActivity.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
else {
if (dbHelper.queryUserByNameAndPass(username,password))
{
Intent intent=new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
}
else Toast.makeText(LoginActivity.this,"用户名或密码错误",Toast.LENGTH_SHORT).show();
}
}
});
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(LoginActivity.this,RegisterActivity.class);
startActivity(intent);
}
});
}
}
DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
final String CREATE_TABLE1="create table Users(_id integer primary key autoincrement,username text,password text)";
final String CREATE_TABLE1_NOTES="create table Notes(_id integer primary key autoincrement,title text,content text ,time)";
Context context;
public DBHelper(Context context, String dbname, int version){
super(context,dbname,null,version);
this.context=context;
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_TABLE1);
db.execSQL(CREATE_TABLE1_NOTES);
Toast.makeText(context,"创建成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL("drop table if exists Users");
db.execSQL("drop table if exists Notes");
onCreate(db);
}
public void insertUser(ContentValues values){
SQLiteDatabase db=getWritableDatabase();
db.insert("Users",null,values);
db.close();
}
public void insertNotes(ContentValues values){
SQLiteDatabase db=getWritableDatabase();
db.insert("Notes",null,values);
db.close();
}
public Cursor queryAll(String dbname){
SQLiteDatabase db=getWritableDatabase();
Cursor cursor=db.query(dbname,null,null,null,null,null,null);
return cursor;
}
public boolean queryUserByNameAndPass(String username,String password) {
SQLiteDatabase db = getWritableDatabase();
Cursor cursor = db.query("Users", null, "username=? and password=?", new String[]{username, password}, null, null, null);
// Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
if (cursor.moveToFirst()){
return true;}
else{
return false;}
}
public boolean queryUserByName(String username){
SQLiteDatabase db=getWritableDatabase();
Cursor cursor=db.query("Users",null,"username=?",new String[]{username},null,null,null);
// Cursor cursor=db.rawQuery("select * from text where content='"+str+"'",null);
if (cursor.moveToFirst()){
return true;}
else{
return false;}
}
public void deleteUser(String username){
SQLiteDatabase db=getWritableDatabase();
db.delete("Users","username=?",new String[]{username});
db.close();
}
public void deleteNotes(String username){
SQLiteDatabase db=getWritableDatabase();
db.delete("Notes","title=?",new String[]{username});
db.close();
}
public void updateUser(String username,ContentValues values){
SQLiteDatabase db=getWritableDatabase();
db.update("Users",values,"username=?",new String[]{username});
}
public void updateNotes(String title,ContentValues values){
SQLiteDatabase db=getWritableDatabase();
db.update("Notes",values,"title=?",new String[]{title});
}
}
NewNotesActivity.java
public class NewNotesActivity extends AppCompatActivity {
EditText et_title;
EditText et_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_notes);
et_title=(EditText) findViewById(R.id.et_title);
et_content=(EditText) findViewById(R.id.et_content);
Intent oldIntent=getIntent();
final String title=oldIntent.getStringExtra("title");
final String content=oldIntent.getStringExtra("content");
et_title.setText(title);
et_content.setText(content);
Button btn_submit=(Button) findViewById(R.id.btn_submit);
btn_submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.putExtra("old_title",title);
intent.putExtra("title",et_title.getText().toString());
intent.putExtra("content",et_content.getText().toString());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
DBHelper dbHelper=new DBHelper(RegisterActivity.this,"MyDatabase.db",2);
EditText et_username;
EditText et_password;
EditText et_password2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
et_username=(EditText) findViewById(R.id.et_username_register);
et_password=(EditText) findViewById(R.id.et_password_register);
et_password2=(EditText) findViewById(R.id.et_password_confirm);
Button btn_ok=(Button) findViewById(R.id.btn_ok);
Button btn_cancel=(Button) findViewById(R.id.btn_cancel);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username=et_username.getText().toString();
String password=et_password.getText().toString();
String password2=et_password2.getText().toString();
if (username.isEmpty()||password.isEmpty()||password2.isEmpty()){
Toast.makeText(RegisterActivity.this,"用户名,密码或确认密码不能为空",Toast.LENGTH_SHORT).show();}
else if (!password.equals(password2)){
Toast.makeText(RegisterActivity.this,"密码和确认密码不一致",Toast.LENGTH_SHORT).show();
}
else if (dbHelper.queryUserByName(username))
Toast.makeText(RegisterActivity.this,"用户名不能重复",Toast.LENGTH_SHORT).show();
else {
ContentValues contentValues=new ContentValues();
contentValues.put("username",username);
contentValues.put("password",password);
dbHelper.insertUser(contentValues);
Toast.makeText(RegisterActivity.this,"插入用户"+username+"成功",Toast.LENGTH_SHORT).show();
}
}
});
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
}