android开发第一天
今天可以说是我正式投入android怀抱的第一天吧,按着自己的兴趣,努力地吸取知识。
听了程老师的课,也觉得收获很多,毕竟以前都是看着书本或者网页教程来学习,第一次有人这么直接地跟你教授着,说着一些你听过但不清晰的知识,就比较轻松地接收着。哈,下节课一定要早点过去坐前排吧!
今天见识了许多有趣的开发工具!
app inventer
就像搭积木一样构建应用程序,即使是普通人也很很快创建自己的apk,真的不错,只不过目前对我没什么用,毕竟eclipse下的开发更全面,更自由!
android studio
google新推出的android开发环境,看起来好像很强大,但是才0.1版本,还有很广的发展空间,暂时功能还是拼不过eclipse的,期待新版本
color scheme designer 3
一个在线取色的工具,挺好的,它会给出你选中颜色的颜色代码
MAKEAPPICON
一个在线制作app图标的网站,你投入一个图标给它,它会发邮件返回这个图标的各种android版本,ios版本,不同清晰度和大小的。
droiddraw
一个在线制作界面的工具,但是在网上制作很卡,而且看起来也没有adt自带的UI设计功能齐全。所以还是放弃了,不过听说它也有应用程序,功能比较强大。
....
除了了解了这些工具之外,我还看了android开发权威指南的第一二章,重新温习了下android的一些基础概念。
android的应用程序框架
在开发android时候,我们一般都与应用程序框架进行交互,实际上它就是我们经常使用的android sdk中的java类、接口的集合
例如:android.app 提供高层的程序模型与基本运行环境
android.appwidget
android.content
android.database
eclipse的汉化
其实这个比较简单,只是下载个包就可以了,网上找一堆
最后,实战部分,仿照教程写了一个圆形画图app,感觉还是有点收获,毕竟好久没打过android代码了,熟悉亲切的感觉。
先发下图
这个程序的功能就是当你按下第一个按钮的时候能够在屏幕上随意地画一个圆,并且可以画很多个
当你按下第二个按钮的时候可以清除你刚绘制的所有圆

源码如下:
先建立一个圆的类,包含了各种圆的属性,圆心坐标(x,y),半径r,颜色值color
Circle.java
package com.kaixuan.app1;
public class Circle {
private float x;
private float y;
private float r;
private int color;
public float getX() {
return x;
}
public void setX(float x) {
this.x = x;
}
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
public float getR() {
return r;
}
public void setR(float r) {
this.r = r;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
}
Circle.java
再建立一个圆形画布的类,通过这个我也感觉,每个view都是一块画布,而画布上的内容就由自定义的protected void onDraw(Canvas canvas)函数来绘制,canvas参数就传入了一块干净的画布,而你就可以用各种绘制函数在画布上面制作你的view。
在这个类里也有一个Circle类型的链表,保存了我们所绘制的每个圆的信息,所以我们每次绘制的时候都只需要保存圆的信息到这个链表里面,然后更新就好了,所以我们的ondraw函数其实也就是绘制出这个Circle链表中的圆而已。
CircleCanvas.java
package com.kaixuan.app1; import java.util.ArrayList; import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View; public class CircleCanvas extends View{
public ArrayList<Circle> circles = new ArrayList<Circle>();
public CircleCanvas(Context context) {
super(context);
// TODO 自动生成的构造函数存根
}
@Override
protected void onDraw(Canvas canvas) {
// TODO 自动生成的方法存根
super.onDraw(canvas);
Paint paint = new Paint();
for(Circle circle:circles) //for循环的用法 for(变量类型 遍历数组用的一个临时变量:数组)
{
paint.setColor(circle.getColor());
canvas.drawCircle(circle.getX(), circle.getY(), circle.getR(), paint);
}
} }
CircleCanvas.java
最后,就是我们的activity类了,因为只有一个activity,所以也就是main activity,是android程序的唯一入口。
在这里创建了一个画布的类,并且把它加到我们两个按钮的布局下面,然后填写相应的按钮点击函数就可以了。
MainActivity.java
package com.kaixuan.app1; import java.util.Random; import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; public class MainActivity extends Activity {
private ViewGroup viewgroup;
private CircleCanvas circlecanvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewgroup = (ViewGroup)getLayoutInflater().inflate(R.layout.layout_main, null);
circlecanvas = new CircleCanvas(this);
viewgroup.addView(circlecanvas, new LayoutParams(300, 350));
setContentView(viewgroup);
}
public void draw(View view)
{
Log.i("TAG", "进入ondraw()函数");
Random random = new Random();
float x = (float)(100 + random.nextInt(100));
float y = (float)(100 + random.nextInt(100));
float r = (float)(20 + random.nextInt(40));
int color;
if(random.nextInt(100) < 50)
color = Color.BLUE;
else if(random.nextInt(100) > 50)
color = Color.RED;
else color = Color.BLACK;
Circle circle = new Circle();
circle.setX(x);
circle.setY(y);
circle.setR(r);
circle.setColor(color);
circlecanvas.circles.add(circle);
circlecanvas.invalidate();
}
public void clear(View view)
{
circlecanvas.circles.clear();
circlecanvas.invalidate();
}
}
MainActivity.java
两个按钮的布局文件
ayout_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Draw random circle" android:onClick="draw"/>
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="clear" android:onClick="clear"/>
</LinearLayout>
layout_main.xml
结束了!希望能坚持写下去,其实挺有意思的。
android开发第一天的更多相关文章
- Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全
原文:Android零基础入门第17节:Android开发第一个控件,TextView属性和方法大全 前面简单学习了一些Android UI的一些基础知识,那么接下来我们一起来详细学习Android的 ...
- Android开发第一讲之目录结构和程序的执行流程
1.如何在eclipse当中,修改字体 下面的这种办法,可以更改xml的字体 窗口--首选项--常规--外观--颜色和字体--基本--文本字体--编辑Window --> Preferences ...
- Android开发 第一篇
关于android开发,new项目通知: 之前的new -> android project,现在更改为new -> android application project,同学们可以继续 ...
- JDK 安装与环境配置配置——Android开发第一步
什么是JDK? JDK 即 Java Development Kit,Java开发工具包,用来编译 Java 程序.JRE 在接触JDK的过程中,同时了解到 JRE,JRE 即 Java Runtim ...
- Android开发第一天---AndroidStudio的安装和第一个安卓开发
今天已经是开始学习Android的第二天,我居然才把AndroidStudio开发环境安装并配置好,我只能说“我太难了”,下了好几个版本,终于找到了一个合适的,得出一个结论外国的东西是真的不太好用啊, ...
- [原]Android 开发第一步
使用 android-studio 开发 写文章时的最新 Android-Studio 程序下载:https://dl.google.com/dl/android/studio/ide-zips/3. ...
- Android开发--第一个活动
一.创建工程 1 项目名:MyActivity 包名:com.iflytek.myactivity 2 为了便于学习,不勾选Create Activity.然后finish,工程创建完成 END ...
- Android 开发第一项目——计算器的开发记录
2017.4.1 今天布局界面基本完成,现在写了一点事件绑定.计划是多用动态绑定,随时用随时改.关于布局方面,昨天弄到很晚,原因是Layout使用错误,用的自带的,没仔细看,预览的时候没有问题但是真机 ...
- Android开发环境搭建
导读: 学习Android开发第一步就是搭建Android开发环境. 1.安装JDK JDK(Java SE Development Kit)是Java的开发工具集.SE表示标准版. JRE(Java ...
随机推荐
- 【转】常用Maven插件
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说,每个任务对应 ...
- 支持向量机SVM(一)
[转载请注明出处]http://www.cnblogs.com/jerrylead 1 简介 支持向量机基本上是最好的有监督学习算法了.最开始接触SVM是去年暑假的时候,老师要求交<统计学习理论 ...
- 从头编写 asp.net core 2.0 web api 基础框架 (1)
工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...
- Cmder 软件中修改λ符号方法
以前的版本 网上都有,我就不介绍了, 只介绍现在的 1. 打开Cmder软件安装位置 2. 打开vendor文件夹 profile.ps1文件 3. 找到第77行 Write-Host " ...
- Java面向对象 集合(下)
Java面向对象 集合(下) 知识概要: (1)Map集合的体系结构 (2)Map集合的方法 (3)HashMap TreeMap (4)集合框架中的常用工具类 ( ...
- commons-pool与commons-pool2连接池
commons-pool和commons-pool2是用来建立对象池的框架,提供了一些将对象池化必须要实现的接口和一些默认动作.对象池化之后可以通过pool的概念去管理其生命周期,例如对象的创建,使用 ...
- OVS中arp响应的流表的实现
总结: 1.br-int 流表总体是按照Normal 的方式,即常规的交换机的转发方式进行转发.而br-tun 交换机则主要按照流表的方式进行转发. 2.一般情况下,VM发出的ARP请求,会在该VM的 ...
- Python和SQL Server 2017的强大功能
Python和SQL Server 2017的强大功能 摘要: 源:https://www.red-gate.com/simple-talk/sql/sql-development/power-pyt ...
- 根据Dockerfile创建docker dotnet coer 镜像
那我们先来看看Dockerfile文件内容,注意这个文件是没后缀名的. #依赖原始的镜像,因为我们是要创建dotnet coer镜像,所以我就用了官方给的镜像[microsoft/dotnet:lat ...
- Java简单工厂模式以及来自lambda的优化
前言 设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式 ...