/>
<Button
style=“@style/calculator_button”
android:id=“@+id/addition”
android:text=“+”
/>
1.2 创建Activity文件,绑定caculator.xml文件
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
requestWindowFeature(Window.FEATURE_NO_TITLE); //创建一个无标题的界面
布局文件中的数字、加减乘除按钮,同时还需要使用findviewbyid函数绑定布局文件中的按钮,这里展示部分代码,其余类似。
private Button clear,back;
private Button division,multiplication,subtraction,addition,equal;//÷,X,-,+,=
private Button button1,button2,button3,button4,button5,button6,button7,button8,button9,button0;
private Button buttonD;
private TextView textView1,textView2;
private void prepareView() {
button1=(Button) findViewById(R.id.button1);
button2=(Button) findViewById(R.id.button2);
button3=(Button) findViewById(R.id.button3);
…
}
计算函数
private void jisuan() {
double tem=Double.parseDouble(tempnum);
if(“+”.equals(lastSign)){
count+=tem;
}else if(“-”.equals(lastSign)){
count=count-tem;
}else if(“x”.equals(lastSign)){
count=count*tem;
}else if(“/”.equals(lastSign)){
count=count/tem;
}else if(“”.equals(lastSign)){
count=tem;
}
Log.d(“dddd”, “计算:”+count+lastSign+tem+“=”+count);
// setMyTextView2(count+“”);
}
在进行加减乘除时的预处理,这里展示加操作,其他操作类似
//加操作
private void jia() {
if(!isOver){
jisuan(); //在进行加操作前先把之前的结果计算一次
lastSign=“+”; //把操作置为“+”
setIsOperationFalse(); //当isOperation为false时表示当前为输入运算符的状态
isOver=true; //当isOver为true时表示操作未完成,还不能进行“=”操作
text+=tempnum+“+”; //保存整个计算过程
tempnum=“”; //将临时存放每次输入的数字的属性值置为空,以便于下一次输入数字
setMyTextView1(text);//显示整个计算过程
}
}
等于操作
private void equal() {//等于
if(!isOver){
isOver=true;//等于之后就over
jisuan();
text+=tempnum+“=”;
setMyTextView1(text);
setMyTextView2(“”+count);
cacu_text = text+count;
clear2();
}
}
后退操作
private void back(){//后退
if(!isOver){
try{
tempnum=tempnum.substring(0, (tempnum.length()-1));
setMyTextView1(text+tempnum);
}catch (Exception e) {
e.printStackTrace();
Log.e(“dddd”, e.getMessage());
}
}
}
监听函数,监听每一个按钮执行响应操作,这里展示部分,其余的类似
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
addNum(“1”);
setIsOperationTrue();
break;
…
…
===================================================================
2.1新建record.xml布局文件,显示账单记录。
<TableLayout
android:layout_width=“fill_parent”
android:layout_height=“wrap_content”>
<TextView
android:layout_weight=“1”
android:layout_height=“wrap_content”
android:text=“记录”/>
<TextView
android:layout_weight=“1”
android:layout_height=“wrap_content”
android:text=“备注”/>
<TextView
android:layout_weight=“1”
android:layout_height=“wrap_content”
android:text=“时间”/>
在caculator.xml中添加按钮组件
<LinearLayout
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:orientation=“horizontal”
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“导出”
android:id=“@+id/output”/>
<Button
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:text=“查看”
android:id=“@+id/show”/>
2.2在caculatorActivity类中声明并绑定按钮,使用intent进行页面的跳转。其中showInputDialog函数实现弹出对话框效果
Button btn1 = findViewById(R.id.output);
btn1.setOnClickListener(new View.OnClickListener() {
//点击按钮弹出输入备忘录提示框
public void onClick(View v) {
showInputDialog();
}
});
//查看记录
Button btn2 = findViewById(R.id.show);
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(CalculatorActivity.this, ShowRecord.class);
Bundle bundle=new Bundle();
bundle.putString(“flag”,“0”);
i.putExtras(bundle);
startActivity(i);
}
});
}
private void showInputDialog() {
/*@setView 装入一个EditView
*/
final EditText editText = new EditText(CalculatorActivity.this);
AlertDialog.Builder inputDialog =
new AlertDialog.Builder(CalculatorActivity.this);
inputDialog.setTitle(“Remark”).setView(editText);
inputDialog.setPositiveButton(“OK”,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent i = new Intent(CalculatorActivity.this, ShowRecord.class);
Bundle bundle=new Bundle();
bundle.putString(“flag”,“1”);
bundle.putString(“remark”,editText.getText().toString());
bundle.putString(“cacu_text”,cacu_text);
i.putExtras(bundle);
startActivity(i);
/*Toast.makeText(CalculatorActivity.this,
editText.getText().toString(),
Toast.LENGTH_SHORT).show();*/
}
}).show();
}
2.3新建class文件Outputcacu,创建数据库工具类,插入账单记录
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建数据库
SQLiteDatabase mydb = this.openOrCreateDatabase(“myrecord.db”,MODE_PRIVATE,null);
}
private void insert(SQLiteDatabase db,String v1,String v2){
//插入数据SQL语句
String sql=“insert into record(text,describe) values(”+v1+“,”+v2+“)”;
//执行SQL语句
db.execSQL(sql);
}
最后
今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
片转存中…(img-iyWtxi0n-1714611906063)]
【Android部分高级架构视频学习资源】
**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!