2015-09-22 20:54:49 qq_22770457 阅读数 110
  • Android平台的崩溃捕获机制及实现

    Android平台的崩溃捕获机制视频教程,该课程主要对Java崩溃和Native崩溃的捕获机制进行分析,并结合简单的实例演示实现方法。 讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。

    7661 人正在学习 去看看 CSDN讲师

学习Android已经有一段时间了,最近一直在啃书,感觉挺充实的~好期待放假,这样可以快点把书看完自己去多做点实例项目,加深理解。

这是之前写的一个计算器小程序,比较简单,但是是自己第一个用Android写出来的小程序,值得纪念噢~

计算器实例

第一部分:计算器布局设计

       首选需要new一个Android项目,然后修改界面布局,代码如下

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#111"
    tools:context="com.example.jisuanqi.MainActivity" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:gravity="right"
        android:layout_margin="5dp"
         />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn1"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1" />

            <Button
                android:id="@+id/btn2"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="2" />

            <Button
                android:id="@+id/btn3"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="3" />

            <Button
                android:id="@+id/btnjia"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="+" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn4"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="4" />

            <Button
                android:id="@+id/btn5"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="5" />

            <Button
                android:id="@+id/btn6"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="6" />

            <Button
                android:id="@+id/btnjian"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="-" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn7"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="7" />

            <Button
                android:id="@+id/btn8"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="8" />

            <Button
                android:id="@+id/btn9"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="9" />

            <Button
                android:id="@+id/btncheng"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="*" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnclean"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="C" />

            <Button
                android:id="@+id/btn0"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="0" />

            <Button
                android:id="@+id/btndengyu"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="=" />

            <Button
                android:id="@+id/btnchu"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="/" />
        </TableRow>
    </TableLayout>

</LinearLayout>

 

 

 预览效果:

虽然看起来还比较硕,但是起码有个样子了...(*^__^*) 
 

 

第二部分:计算器功能实现

首先需要在主activity中注册组件

 

public class MainActivity extends Activity implements OnClickListener {

	private TextView tvScreen ;
	private List<Item> items = new ArrayList<Item>();

这里引入OnclickListener接口 是在后面绑定按钮设置监听器

 

然后重写onCreate方法,把布局中的按钮以及textview绑定

 

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvScreen = (TextView) findViewById(R.id.tv);
		findViewById(R.id.btn0).setOnClickListener(this);
		findViewById(R.id.btn1).setOnClickListener(this);
		findViewById(R.id.btn2).setOnClickListener(this);
		findViewById(R.id.btn3).setOnClickListener(this);
		findViewById(R.id.btn4).setOnClickListener(this);
		findViewById(R.id.btn5).setOnClickListener(this);
		findViewById(R.id.btn6).setOnClickListener(this);
		findViewById(R.id.btn7).setOnClickListener(this);
		findViewById(R.id.btn8).setOnClickListener(this);
		findViewById(R.id.btn9).setOnClickListener(this);
		findViewById(R.id.btnjia).setOnClickListener(this);
		findViewById(R.id.btnjian).setOnClickListener(this);
		findViewById(R.id.btncheng).setOnClickListener(this);
		findViewById(R.id.btnchu).setOnClickListener(this);
		findViewById(R.id.btndengyu).setOnClickListener(this);
		findViewById(R.id.btnclean).setOnClickListener(this);
		findViewById(R.id.btn0).setOnClickListener(this);
	
		
	}

 到了这一步,得理清一下算法逻辑。

 

 

我们首先得输入一个数字,然后输入运算符号,再输入数字,再执行=

10+20

 

一个数字一个操作符号一个数字一个操作符号这样排列

10+20=38

 

在执行第二个操作符号时前面三项已经可以执行运算了

所以这里需要一个原则:一旦能执行操作运算就执行操作运算,之后再与后面的元素执行相关操作

 

所以这里可以用数组把这些项都记录下来,然后再做一个判断,判断前面三项是否有三项,就可以执行运算,如果是就执行运算并继续到下一个。

 

所以接下来再创建一个类Item.java(注意这个类和Mainactivity在一个包里)表示每一项

package com.example.jisuanqi;

public class Item {
	
	public Item(double value, int type) {
		this.value = value;
		this.type = type;
	}
	
	public double value = 0;
	
	public int type = 0;
}

 以及另一个类表示数据类型Types.java

package com.example.jisuanqi;

public class Types {

	public static final int jia = 1;

	public static final int jian = 2;
	
	public static final int cheng = 3;

	public static final int chu = 4;

	public static final int dengyu = 5;
}

 再回到mainactivity里定义一个数组,这个数组是用来存放项的,也就是计算时输入的项。

public class MainActivity extends Activity implements OnClickListener {

	private TextView tvScreen ;
	private List<Item> items = new ArrayList<Item>();

 然后在onclick()方法中作判断,分别执行不同的操作。

public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn0:
			tvScreen.append("0");
			break;
		case R.id.btn1:
			tvScreen.append("1");
			break;
		case R.id.btn2:
			tvScreen.append("2");
			break;
		case R.id.btn3:
			tvScreen.append("3");
			break;
		case R.id.btn4:
			tvScreen.append("4");
			break;
		case R.id.btn5:
			tvScreen.append("5");
			break;
		case R.id.btn6:
			tvScreen.append("6");
			break;
		case R.id.btn7:
			tvScreen.append("7");
			break;
		case R.id.btn8:
			tvScreen.append("8");
			break;
		case R.id.btn9:
			tvScreen.append("9");
			break;
		case R.id.btnjia:
			items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.dengyu));
			checkAndCompute();
			items.add(new Item(0, Types.jia));
			tvScreen.setText("");
			break;
		case R.id.btnjian:
			items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.dengyu));
			checkAndCompute();
			items.add(new Item(0, Types.jian));
			tvScreen.setText("");
			break;
		case R.id.btncheng:
			items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.dengyu));
			checkAndCompute();
			items.add(new Item(0, Types.cheng));
			tvScreen.setText("");
			break;
		case R.id.btnchu:
			items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.dengyu));
			checkAndCompute();
			items.add(new Item(0, Types.chu));
			tvScreen.setText("");
			break;
		case R.id.btnclean:
			tvScreen.setText("");
			items.clear();
			break;
		case R.id.btndengyu:
			items.add(new Item(Double.parseDouble(tvScreen.getText().toString()),Types.dengyu));
			checkAndCompute();
			tvScreen.setText(items.get(0).value+"");
			items.clear();
			break;

		default:
			break;
		}
	}

 注意这里还需要一个方法进行计算

 

	public void checkAndCompute() {
		if (items.size()>=3) {
			double a = items.get(0).value;
			double b = items.get(2).value;
			int opt = items.get(1).type;
			
			items.clear();
			
			switch (opt) {
			case Types.jia:
				items.add(new Item(a+b, Types.dengyu));
				break;
			case Types.jian:
				items.add(new Item(a-b, Types.dengyu));
				break;
			case Types.cheng:
				items.add(new Item(a*b, Types.dengyu));
				break;
			case Types.chu:
				items.add(new Item(a/b, Types.dengyu));
				break;

			default:
				break;
			}
			
		}
	}

 

 

这样一来,计算器功能就已经实现了,下面是虚拟机上的运行效果图:

操作:6+3=9



 

 

 

 

ps:写完之后发现其实还是有很多缺陷的。。比如没有小数点.,不过把左下方C的按钮换成“.”,然后再到下方加一个专门的clean按钮就可以了~

************************************************华丽的分割线******************************************************************

今天把计算器界面还有功能优化了一下,加入了小数点功能,下方加入了清屏按钮

新增了一个显示框,可以显示算法的步骤。

还加入了按钮选择状态和非选择状态颜色显示不同的功能

其实这个功能并不复杂,在res目录下新建一个drawable文件夹

然后在里面新建xml文件login_button_selector.xml类型为selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/clr_normal" android:state_pressed="false"/>
        <item android:drawable="@drawable/clr_pressed" android:state_pressed="true"/>
    </selector>

 然后在按钮布局中添加一句

android:background="@drawable/login_button_selector"

 就ok~\(≧▽≦)/~啦啦啦

下面是运行效果截图:



 

 

最后就是整个项目的附件:

..试了几次不能上传,所以传到百度云了,下面是链接:

http://yun.baidu.com/share/link?shareid=4106246580&uk=4047395201
 

2010-08-24 13:32:00 fenhonghuiyu 阅读数 390
  • Android平台的崩溃捕获机制及实现

    Android平台的崩溃捕获机制视频教程,该课程主要对Java崩溃和Native崩溃的捕获机制进行分析,并结合简单的实例演示实现方法。 讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。

    7661 人正在学习 去看看 CSDN讲师

       因为以前没接触过Android,所以我的第一个Android程序总是在创建AVD时出错。总是提示找不到avd。上网查了下,原来是:创建AVD时系统默认存放到了D盘我的文档里了。而它应该放在C:/Documents and Settings/Administrator下(即你的当前用户下)。
       没想到运行还是不行。在上网查一查,没找到解决办法。
       看到创建的AVD包里有好几个文件,点开看一看。一看才发现问题所在。其中有一个 avdname.ini文件(avdname:你所创建的avd的名字),其中有个path属性,它的值还是原来系统默认时的路径。应该改为:path=C:/Documents and Settings/Administrator/.android/avd/avdname.avd.
       如此,重新执行程序,OK,我的第一个HelloWorld  的 Android程序就执行成功了。

2016-05-21 19:23:17 zhuo_android 阅读数 220
  • Android平台的崩溃捕获机制及实现

    Android平台的崩溃捕获机制视频教程,该课程主要对Java崩溃和Native崩溃的捕获机制进行分析,并结合简单的实例演示实现方法。 讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。

    7661 人正在学习 去看看 CSDN讲师

   打招呼案例,是学习Android课程后接触的第一个Android实例,目的是实现在文本框内输入文字点击按钮后,自动弹出“你好+(输入文字)”效果。如图:

输入文字点击按钮后

1.首先我们需要建立一个Android应用的项目,通过File--new--Android Application Project创建项目,给自己的项目取号名字,创建好包名,选择一张应用的显示图片;



2.建好项目后,接下来就是代码的完成,首先我们需要设计界面,界面的设计在res--layout--activity_main内完成,项目中用的图片资源放到res--drawable内(drawable后缀的不同是因为分辨率的不同),代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/smile"  //完成背景图片的添加  
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <!-- 第一个组件是文本组件,用于显示“请输入姓名:” -->
    <TextView   
        android:id="@+id/tvname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/tvname"
        android:textSize="25dp" />
    <!-- 第二个文本组件用于让用户输入内容 -->
    <EditText   
        android:id="@+id/etname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvname"
        android:layout_below="@+id/tvname"
        android:ems="10" >

        <requestFocus />
    </EditText>
     <!-- 加入了一个按钮,用于点击 -->
    <Button   
        android:id="@+id/btnClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etname"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:background="@null"
        android:drawableLeft="@drawable/btn_bg"
        android:text="@null" />

</RelativeLayout>

3.完成上面的代码就将基础的界面设计完成了,接下来需要在src中编写Java代码,因为设计到按钮的点击,并且要做出相应的反应,所以需要在Java代码中完成,代码如下:

package cn.edu.bztc.sayhi;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button btnClick;
    private EditText etname;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btnClick=(Button) findViewById(R.id.btnClick);//findViewById用于查找需要点击的那个button,找到后将其赋给Button类型的变量btnClick
        etname=(EditText) findViewById(R.id.etname);
        
        btnClick.setOnClickListener(new OnClickListener() {//建立点击的监听,new出的OnClickListener()本身需要实现Onclick方法
			
			@Override
			public void onClick(View v) {//在onClick方法中写入你想要在点击后实现的东西
				String name=etname.getText().toString();//得到用户在文本框中输入的内容
				Toast.makeText(MainActivity.this, "你好"+name, Toast.LENGTH_LONG).show();//将文本框中的内容通过Toast的makeText()编辑文本后用show()方法显示出来	
				
			}
		});
        
    }
4.到此为止,代码基本完成,可以用模拟器运行一下程序。



2019-05-08 20:27:40 weixin_44228194 阅读数 414
  • Android平台的崩溃捕获机制及实现

    Android平台的崩溃捕获机制视频教程,该课程主要对Java崩溃和Native崩溃的捕获机制进行分析,并结合简单的实例演示实现方法。 讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。

    7661 人正在学习 去看看 CSDN讲师

当我们配置好android环境后,如何创建第一个项目,每一项代表了什么意思,这里以Android studio 为例,其他软件如eclipse等是类似的操作

当我们安装好AS后
在这里插入图片描述
这里我们选择第一项
在这里插入图片描述
其余选择next就行了,最后点击finish就可以了 这里我们一般选择空的activity
在这里插入图片描述
出现下面界面表示我们的项目就创建成功了
在这里插入图片描述
接下来具体讲讲我们平时会用到的一些菜单
在这里插入图片描述
当我们在包名点击右键时,出现下面界面
在这里插入图片描述
在.java界面点击某一个代码右键
在这里插入图片描述
菜单栏
在这里插入图片描述
项目有时候莫名报错,我们就可以使用这两个选项,纯净一下项目
在这里插入图片描述
【评论需要解决的问题或者文章中的不恰当的地方,接受改正】

2015-04-24 16:41:06 wyx100 阅读数 6037
  • Android平台的崩溃捕获机制及实现

    Android平台的崩溃捕获机制视频教程,该课程主要对Java崩溃和Native崩溃的捕获机制进行分析,并结合简单的实例演示实现方法。 讲师介绍:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。

    7661 人正在学习 去看看 CSDN讲师

Android实例图解教程目录

 http://blog.csdn.net/wyx100/article/details/45061407

 

一.生成Android应用工程

1.运行eclipse.exe

2.见下图

3.进入界面

4.输入 应用、项目、包名称

5.选择 项目建立的工作空间路径;

6.配置 图标和背景等特性

Foreground 是apk安装后,在ADT或手机界面显示的图标,可以设置自定义的图标。

7.选择 Activity  的页面格式

如下图所示,有3个选项,根据项目需要,选择。

8.设置对应名称

 9.生成项目

二. 项目介绍

1.界面 可以使用工具采用拖拉的方式 拖动控件。  图形界面开发环境。

下图是选择HelloWorld---res---layout下的activity_main.xml后显示的界面。可以完成可视化界面编辑,比敲代码效率高。

2.界面布局的代码格式

3.MainActivity.java  主程序结构   代码和视图绑定

3.代码MainActivity.java

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

4.代码activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

5.代码main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

三.项目运行

1.运行项目

2.启动ADT模拟器,Android手机模拟软件。运行后,自动启动ADT

3.运行界面

4.点击配置运行界面   

 

 

 

没有更多推荐了,返回首页