一、主界面
1、界面效果

2、準備作業
(1)在工程包名下面建立一個檔案夾 選擇工程的包名——右擊——new——package——在目前出現的內容后面追加輸入 activity——單擊 ok 按鈕,便可生成 activity 檔案夾,
(2) 在 activity 檔案夾中建立 6 個子頁面 選擇 activity 檔案夾,右擊——new——activity——Empty Activity——輸入類 名:InComeActivity——單擊 ok 按鈕,

3、主界面布局 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"
android:background="@drawable/welcomebg"
tools:context=".view.MainActivity">
<ImageButton
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@drawable/main_top"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="40dp"
android:gravity="center">
<Button
android:id="@+id/bt_newincome_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/new_pay_in"
android:layout_marginRight="50dp"/>
<Button
android:id="@+id/bt_incomedetail_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/my_pay_in"
android:layout_marginRight="50dp"/>
<Button
android:id="@+id/bt_newpay_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/new_pay_out" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="新增收入"
android:textSize="15sp"
android:textColor="#ffffff"
android:layout_marginRight="80dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="收入明細"
android:textSize="15sp"
android:textColor="#ffffff"
android:layout_marginRight="80dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="新增支出"
android:textSize="15sp"
android:textColor="#ffffff"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="40dp"
android:gravity="center">
<Button
android:id="@+id/bt_paydetail_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/my_pay_out"
android:layout_marginRight="50dp"/>
<Button
android:id="@+id/bt_dataanalyse_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/data_administration"
android:layout_marginRight="50dp"/>
<Button
android:id="@+id/bt_syssetting_main"
android:layout_width="90dp"
android:layout_height="90dp"
android:background="@drawable/sys_setting" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="支出明細"
android:textSize="15sp"
android:textColor="#ffffff"
android:layout_marginRight="80dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="資料分析"
android:textSize="15sp"
android:textColor="#ffffff"
android:layout_marginRight="80dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="系統設定"
android:textSize="15sp"
android:textColor="#ffffff"/>
</LinearLayout>
</LinearLayout>
4、主界面類檔案 MainActivity.java
public class MainActivity extends AppCompatActivity {
//定義物件
Button bt_newincome,bt_incomedetail,btn_newpay,btn_paydetail,bt_dataanalyse,btn_setting;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 系結控制元件
initView();
//按鈕單擊事件
btnOnClick();
}
// 系結控制元件--------------------------代碼
private void initView() {
bt_newincome=findViewById(R.id.bt_newincome_main);
bt_incomedetail=findViewById(R.id.bt_incomedetail_main);
btn_newpay=findViewById(R.id.bt_newpay_main);
btn_paydetail=findViewById(R.id.bt_paydetail_main);
bt_dataanalyse=findViewById(R.id.bt_dataanalyse_main);
btn_setting=findViewById(R.id.bt_syssetting_main);
}
//按鈕單擊事件-------------------代碼
private void btnOnClick() {
bt_newincome.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, NewInComeActivity.class);
startActivity(intent);
}
});
bt_incomedetail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, InComeDetailActivity.class);
startActivity(intent);
}
});
btn_newpay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, NewPayActivity.class);
startActivity(intent);
}
});
btn_paydetail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, PayDetailActivity.class);
startActivity(intent);
}
});
bt_dataanalyse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, DataAnalyseActivity.class);
startActivity(intent);
}
});
btn_setting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this, SysSettingActivity.class);
startActivity(intent);
}
});
}
}
5、代碼講解
專案中使用到了ImageButton,但是給圖片設定具體尺寸后發現還是原來的大小,后來將ImageButton變成ImageView就可以了,首先我們從原始碼的角度來看一下兩者的區別,
ImageView繼承的是View ImageButton繼承的是ImageView
我們來分析一下幾種不同情況下兩者之間的差別,
1、兩者均不設定具體的寬高,
其顯示效果沒有什么差別,
2、設定了具體的寬高,
ImageView會按照具體的寬高尺寸發生變化,但是ImageButton只會顯示圖片的原始像素大小,如果給ImageButton設定了scaleType屬性就可以達成ImageView的效果,但是圖片會失真,
3、設定背景選擇器,
ImageView要想使選擇器效果生效,需要讓控制元件獲得焦點,需要加上android:clickable=true;
ImageButton就不需要處理,因為在原始碼中ImageButton的建構式中已經設定過了setFocusable(true),
4、設定background無具體寬高,
效果一樣,
5、設定background有具體寬高,
效果一樣,與src不同的是,兩者均隨著具體寬高發生改變,
二、新增收入界面
1、界面效果

2、 前期準備
(1)為 spinner 控制元件準備資料
(1)在 values 下新建一個 xml 檔案,如下圖:
(2)在檔案中添加兩個字串數
(3)在布局檔案用 entries 屬性參考字串陣列
(2)在資料庫類檔案中添加收入表和支出表

//創建一個收入表
db.execSQL("create table in_come(id integer primary key autoincrement,inmoney double,intime varchar(20),intype varchar(30),inpayer varchar(100),inremark varchar(500))");
//創建一個支出表
db.execSQL("create table out_pay(id integer primary key autoincrement,outmoney double,outtime varchar(20),outtype varchar(30),outpayee varchar(100),outremark varchar(500))");
3、新增收入布局界面 activity_new_income.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"
android:background="@drawable/new_income_bg"
tools:context=".activity.NewInComeActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="220dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="金 額:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_money_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="0.00"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日 期:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_time_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="2020-05-12"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="類 型:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<Spinner
android:id="@+id/sp_type_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/incometype"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="付款方:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_payer_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="海明有限公司"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="備 注:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_remark_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="遠程技術指導費"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<Button
android:id="@+id/bt_save_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="保存"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:background="@drawable/btn_style_one"
android:layout_marginTop="40dp"/>
<Button
android:id="@+id/bt_cancel_newin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="20sp"
android:textColor="#000000"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:background="@drawable/btn_style_two"
android:layout_marginTop="20dp"/>
</LinearLayout>
4、新增收入類檔案 NewInComeActivity.java
public class NewInComeActivity extends AppCompatActivity {
//1 定義物件
EditText et_money,et_time,et_payer,et_remark;
Spinner sp_type;
Button bt_sava,bt_cancel;
MyDBHelper mhelper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_in_come);
//2 系結控制元件
initView();
//3 保存按鈕功能的實作
btnSave();
//4 取消按鈕功能的實作
btnCancel();
}
//2 系結控制元件-------------------代碼
private void initView() {
et_money=findViewById(R.id.et_money_newin);
et_time=findViewById(R.id.et_time_newin);
sp_type=findViewById(R.id.sp_type_newin);
et_payer=findViewById(R.id.et_payer_newin);
et_remark=findViewById(R.id.et_remark_newin);
bt_sava=findViewById(R.id.bt_save_newin);
bt_cancel=findViewById(R.id.bt_cancel_newin);
mhelper=new MyDBHelper(NewInComeActivity.this);
db=mhelper.getWritableDatabase();
}
//3 保存按鈕功能的實作--------代碼
private void btnSave() {
bt_sava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//獲取輸入的內容保存到資料庫的收入表中
ContentValues values=new ContentValues();
values.put("inmoney",et_money.getText().toString());
values.put("intime",et_time.getText().toString());
values.put("intype",sp_type.getSelectedItem().toString());
values.put("inpayer",et_payer.getText().toString());
values.put("inremark",et_remark.getText().toString());
db.insert("in_come",null,values);
Toast.makeText(NewInComeActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
//重繪本頁面
Intent intent=new Intent(NewInComeActivity.this,NewInComeActivity.class);
startActivity(intent);
finish();
}
});
}
//4 取消按鈕功能的實作--------代碼
private void btnCancel() {
bt_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(NewInComeActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
}
}
三、新增支出界面
1、界面效果

3、新增支出布局界面 activity_new_pay.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"
android:background="@drawable/new_pay_bg"
tools:context=".activity.NewPayActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="220dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="金 額:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_money_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="0.00"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日 期:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_time_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="2020-05-12"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="類 型:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<Spinner
android:id="@+id/sp_type_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/paytype"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="收款方:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_payer_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="海明有限公司"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="備 注:"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"/>
<EditText
android:id="@+id/et_remark_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="遠程技術指導費"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"/>
</LinearLayout>
<Button
android:id="@+id/bt_save_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="保存"
android:textSize="20sp"
android:textColor="#ffffff"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:background="@drawable/btn_style_one"
android:layout_marginTop="40dp"/>
<Button
android:id="@+id/bt_cancel_newout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:textSize="20sp"
android:textColor="#000000"
android:layout_marginLeft="60dp"
android:layout_marginRight="60dp"
android:background="@drawable/btn_style_two"
android:layout_marginTop="20dp"/>
</LinearLayout>
4、新增支出類檔案 NewPayActivity.java
public class NewPayActivity extends AppCompatActivity {
//定義物件
EditText et_money,et_time,et_payer,et_remark;
Spinner sp_type;
Button bt_sava,bt_cancel;
MyDBHelper mhelper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_pay);
//2 系結控制元件
initView();
//3 保存按鈕功能的實作
btnSave();
//4 取消按鈕功能的實作
btnCancel();
}
//2 系結控制元件-------------------代碼
private void initView() {
et_money=findViewById(R.id.et_money_newout);
et_time=findViewById(R.id.et_time_newout);
sp_type=findViewById(R.id.sp_type_newout);
et_payer=findViewById(R.id.et_payer_newout);
et_remark=findViewById(R.id.et_remark_newout);
bt_sava=findViewById(R.id.bt_save_newout);
bt_cancel=findViewById(R.id.bt_cancel_newout);
mhelper=new MyDBHelper(NewPayActivity.this);
db=mhelper.getWritableDatabase();
}
//3 保存按鈕功能的實作--------代碼
private void btnSave() {
bt_sava.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//獲取輸入的內容保存到資料庫的收入表中
ContentValues values=new ContentValues();
values.put("outmoney",et_money.getText().toString());
values.put("outtime",et_time.getText().toString());
values.put("outtype",sp_type.getSelectedItem().toString());
values.put("outpayee",et_payer.getText().toString());
values.put("outremark",et_remark.getText().toString());
db.insert("pay_out",null,values);
Toast.makeText(NewPayActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
//重繪本頁面
Intent intent=new Intent(NewPayActivity.this,NewPayActivity.class);
startActivity(intent);
finish();
}
});
}
//4 取消按鈕功能的實作--------代碼
private void btnCancel() {
bt_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(NewPayActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/297864.html
標籤:其他
上一篇:Android校招知識點——Java篇(雜,僅供個人參考)(一)
下一篇:為什么要學Java?



