精华内容
参与话题
问答
  • 这是之前写的一个计算器小程序,比较简单,但是是自己第一个用Android写出来的小程序,值得纪念噢~ 计算器实例 第一部分:计算器布局设计  首选需要new一个Android项目,然后修改界面布局,代码如下   &...

    学习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
     

    展开全文
  • 本节书摘来自异步社区《精通Android 实例开发》一书中的第1章,第1.14节第一个Android程序,作者 陈强,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.14 第一个Android程序 1.14.1 实例说明经过本书前面...

    本节书摘来自异步社区《精通Android 实例开发》一书中的第1章,第1.14节第一个Android程序,作者 陈强,更多章节内容可以访问云栖社区“异步社区”公众号查看

    1.14 第一个Android程序

    1.14.1 实例说明
    经过本书前面实例的讲解,想必读者已经了解了搭建Android开发环境的基本知识。在本实例中,将通过一个简单Android实例的实现过程来说明编写Android应用代码的具体流程。

    我们知道Eclipse是开发Android应用项目的最佳集成开发环境,所以本书中的具体编码实例都将使用Eclipse来实现。使用Eclipse开发传统Android应用项目的方法和开发传统Java项目的方法基本相似,都要事先创建Project工程项目,然后才能编写源码。

    1.14.2 具体实现
    (1)打开Eclipse,依次单击【File】︱【New】︱【Project】命令,然后单击“Android”选项新建一个Android工程文件,如图1-75所示。

    (2)选择“Android Project”选项后单击【Next】按钮,在弹出的“New Android Project”对话框中,设置工程信息,如图1-76所示。在此界面中需要依次设置工程名字、包名字、Activity名字、应用名字。


    2da4bc7ce8b0ad46b7bc95878c13077cec4add4e

    (3)经过上述步骤后,创建了一个名为“first”的工程文件。此时打开文件“fist.java”,会显示如下代码。

    package first.a;
    import android.app.Activity;
    import android.os.Bundle;
    public class fistMM extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }

    如果此时运行程序,在模拟器中将不会显示任何东西。我们可以对上述代码稍微进行修改,让程序输出“你们好,我是Android!”。具体代码如下所示。

    package first.a;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    public class fistMM extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            TextView tv = new TextView(this);
            tv.setText("你们好,我是Android!");
            setContentView(tv);
        }
    }

    (4)保存上述代码,此时就可以运行这段程序了。右键单击项目名,在弹出命令中依次选择【Run As】︱【Android Application】命令,如图1-77所示。

    (5)此时运行上述Android工程程序,运行完成后在屏幕中输出“你们好,我是Android!”这段文字,如图1-78所示。


    9490b3a6e4583c3a9d92a4a813869cb4fc058e57

    1.14.3 特别提醒——解决模拟器运行时间长而引发的错误
    在第一次使用模拟器调试Android程序时,很可能因为加载程序的时间太长,运行后会一直显示图1-79所示的界面。

    解决此问题的方法是单击图1-79中的MENU键,在弹出窗口中单击【Wait】按钮,如图1-80所示。


    e12f1aff400caf35868b02143595a4e4cf14d458

    经过上述操作,即可成功显示图1-78所示的运行效果。

    另外在Android项目中,几乎所有的UI都是由View或View子类实现的。View代表了一块区域,此区域不但可以处理事件,并且可以渲染这块区域。上述代码中的组件是TextView,此组件就是通过继承View来实现的。为此我们可以认为:TextView代表了一块区域,区域里面有一些文字信息,并且我们可以对区域里的文字进行修饰处理。

    展开全文
  • 我的第一个Android WebView实例

    千次阅读 2018-04-29 23:27:25
    以前做前端开发的时候,经常遇到需要把H5页面直接在app里面打开的情况,比如论坛、抽奖活动、秒杀活动等,将H5嵌入WebView的做法,可以减少客户端开发,升级等,小功能快速交付上线,但是也有一个问题,调试非常麻烦...

    以前做前端开发的时候,经常遇到需要把H5页面直接在app里面打开的情况,比如论坛、抽奖活动、秒杀活动等,将H5嵌入WebView的做法,可以减少客户端开发,升级等,小功能快速交付上线,但是也有一个问题,调试非常麻烦,在浏览器里面测试没有问题的功能,在WebView里面可能会遇到很多问题。

    这里介绍如何开发一个简单的WebView,并打开http://www.baidu.com页面。

    1、activity_main.xml配置文件中设计一个WebView控件,控件id为wv。

    <?xml version="1.0" encoding="utf-8"?>
    <WebView android:id="@+id/wv" 
          android:layout_height="match_parent" 
          android:layout_width="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"/>

    2、在默认的MainActivity中编写WebView相关的代码。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //initView();
        webView = (WebView)findViewById(R.id.wv);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.loadUrl("http://www.baidu.com/");
    }

    3、在AndroidManifest.xml文件中配置uses-permission,一定要加。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.xxx.myandroidapp">
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    最后运行MainActivity.java,连接手机测试。展示baidu H5页面。

                                       

    如果不在AndroidManifest.xml文件中设置uses-permission,那么就会出现如下图所示的网页无法打开错误。

                                       



    展开全文
  • Android 之创建AVD总结

           因为以前没接触过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程序就执行成功了。

    展开全文
  • 本文旨在一步一步记录一个 JNI 实例的诞生过程及在这个过程中我遇到的坑 & 解决方案。作为一个以前没有接触过 JNI 开发的新手,以下步骤中很多内容都看不懂,所以也不打算在本文中详细介绍,不过会在以后的博文...
  • 当我们配置好android环境后,如何创建第一个项目,每一项代表了什么意思,这里以Android studio 为例,其他软件如eclipse等是类似的操作 当我们安装好AS后 这里我们选择第一项 其余选择next就行了,最后点击finish...
  • 差不多花了天来入门NDK,我把几容易出问题的地方(也是我自己出了问题的地方贴出来),首先在1.安装cygwin的时候选择下载网址时候选的不好速度很慢~~我觉得http:mirrors.kernel.org这网址下载速度挺快。2....
  • 实例有3个界面(Activity)。activity_main界面有两个按钮,...activityc有一个输入框和一个“确定”按钮,单击“确定”按钮将关闭activityc,并将输入框中的内容回传到activity_main中。activity_main获取到ac...
  • 1.首先在Androidstudio上创建一个支持c++的项目。 2.我用的ffmpeg编译是那种编译成一个so文件的方式,不是那种对各个模块分别生成一个so的方式。 3.libffmpeg.so放在libs armeabi-v7a目录下,这是在app 的gradle里...
  • 下面主要对这个简单的JNI实例的实现,做一个记录。   注意:使用的是ndk-1.6.r1,在ndk_r4版本后和这有点区别,这里说明下。   1、在ndk安装目录的apps下建立一个工程文件夹JniDemo,在该文件夹下建立...
  • 此作品会拿一个APK的全部开发过程展示出来,android的基础知识不会讲解,需要网友具备一些java和android的基础...1.第一步,创建第一个启动的Activity package bbs.androidchina.net; import android.os.Bundle;
  • 、工具 1.apkIDE 2.蓝叠 二、查看原程序 去看看错误提示 三、反编译 找出错误的地方 四、修改 五、验证
  • 100多个Android 实例集合 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间删除,谢谢您。]
  • 开发第一个Android 并运行 图示建立过程和运行过程 一步一步建立工程和运行
  • 1.将sdk复制到android-sdk-windows\platforms下.如果有网络的话就android-sdk-windows可以自动下,如果已经手动单独把sdk下好了,那么要手动复制到android-sdk-windows下.2.安装Eclipse插件ADT.3.新建android项目.4....
  • 本文代码完全来自于《第一行代码——Android》郭霖著,仅用于个人笔记以及方法梳理。 1.实现服务的步骤 1)准备步骤:添加依赖 'com.squareup.okhttp3:okhttp:3.4.1' 2)新建回调接口:DownloadListener,并定义...
  • 2、打开Eclipse,点击Help下的Install New Software,点击add,通过弹出的界面来安装ADT,Name可以自己随便起一个,Location为ADT的路径(注意:路径不要有中文名),添加完成后点击OK,然后就是下一步…下一步…完成 ...
  •  (一)前言  FaceBook早期开源发布了React Native For IOS,终于在2015年9月...可以这样讲在2015年移动平台市场上有两方向技术研究比较火,第一种为阿里,百度,腾讯,携程,360等一线互联网公司的插件化,热修
  • 下午搞了一下android,上网download了一些实例。放在eclipse下,出现了系列的错,记录如下: ...2.我用的sdk是2.3的,所以还要个android-support-v4.jar 3.系统的环境变量ANDROID_SDK_HOME=C:\Users\txy\.and...
  • 看雪出品的android软件安全与逆向中的第一个实例:工具: 1.APKIDE 逆向思路:(1)smali目录下存放了程序所有的反汇编代码。 (2)res目录则是程序中所有的资源文件。 (3)往往错误提示信息通常是关键代码的地方...
  • android练习实例第一

    2011-04-28 11:46:03
    android练习实例第一天这是我为大家学习android爱好者兼初学者提供的一系列的项目源码参考,练习的实例。我觉得学习这东西就应该是一天一天的积累,然后希望下载我的实例的同学可以把我的实例都规整在一起,以后...
  • ...对于android项目,我们常常会遇到这样一种情况,比如某一版本的线上应用,突然发现了一个BUG,修改后发现不值当为这个BUG进行一次版本升级,那么怎么去解决在同一版本上修改线上应用的BUG呢,

空空如也

1 2 3 4 5 ... 20
收藏数 2,604
精华内容 1,041
关键字:

第一个android实例