(一)认识Android Studio

Android Studio 是谷歌推出的一个Android集成开发工具,Android Studio 提供了集成的 Android 开发工具用于开发和调试。

Android Studio界面

manifests( 清单文件): 程序的配置文件:启动界面,风格,注册界面等

Java文件: 各种类 源代码:第一个子文件 后面两个是单元测试文件(用处不大)

res文件( 资源文件):

* drawable文件:图片资源

* layout文件:每个界面里面有哪些控件,控件怎么显示

* mipmap文件:应用,图标

* values文件:colors颜色,string字符串,style风格

Gradle文件: 工具文件 添加依赖

(二)Activity

Activitiy:描述UI,并且处理用户与机器屏幕的交互。可以理解为界面,管理一个界面从创建到运行到结束的整个过程(生命周期)

public class MainActivity extends AppCompatActivity {

//当程序运行是就会显示这个界面

}

一个界面的生命周期:

界面—菜鸟教程

@Override//创建一个界面 界面如何布局

protected void onCreate(Bundle savedInstanceState) {

//配置界面 容器在xml文件里面

setContentView(R.layout.activity_main);

super.onCreate(savedInstanceState);

}

@Override //启动一个界面

protected void onStart() {

super.onStart();

}

@Override//重新启动一个界面

protected void onRestart() {

super.onRestart();

}

@Override//恢复界面 后台->前台

protected void onResume() {

super.onResume();

}

@Override//暂停界面 切换界面

protected void onPause() {

super.onPause();

}

@Override//界面销毁

protected void onDestroy() {

super.onDestroy();

}

(二)如何对界面进行布局

1,使用Layout文件下的xml文件配置,默认一个Activity都对应一个xml配置文件。xml文件的命名特点:activity_界面功能.xml;比如对应MainActivity.java的配置文件就是activity_main.xml. xml文件就是一个容器:可以存放很多UI控件,一个界面有很多控件,就需要布局:

1,约束布局 ConstraintLayout

2,线性布局 LinearLayout

3,相对布局 RelativeLayout

4,帧布局 FrameLayout

5,表格布局 tableLayout GridLayout

6,绝对布局 AbsoluteLayout

那么什么是控件呢?

控件 = 一个视图 = 看得到的东西,一个控件就是一个类的对象,有自己的属性和方法。

1,基础阶段学习熟练的使用系统自带的控件,比如 TextView EditText Button ImageView ListView RecycleView等

2,高级阶段要学习自定义控件,在已有的控件基础上加上自己的功能 (继承),更高级一点就是自己画控件

接下来,我们在xml文件里面添加控件:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:id="@+id/f1_main"

>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/bgg"

/>

首先我们选择的页面布局是帧布局FrameLayout。然后添加一个控件ImageView,

android:src="@drawable/bgg"表明图片取自src资源文件下,drawable子目录下的bgg图片,图片是已经导入到drawable文件里的。 android:layout_width="match_parent"是在设置图片的宽度,下一行代码是在设置图片的高度,match_parent是在指定图片的大小和父视图的大小一样,还有下列指定大小的方式:

1,match_parent 和父视图一样大

2,wrap_content 包裹内容 ,和控件内容一样大

3,指定具体的大小 ,比如20dp

父视图和子视图:将一个控件添加到一个容器中,控件就是这个容器的子视图,容器是这个控件的父视图。

添加结果

我们可以看到图片上面显示出了这个项目的名称,非常难看,每个程序或UI界面都可以设置自己的风格,这样我们可以在values文件下的styles.xml更改,将parent="Theme.AppCompat.Light.DarkActionBar",中的DarkActionBar改成NoActionBar。

如果要配置其他东西,可以在manifests文件下配置

image.png

2,使用Java代码对界面布局

//通过代码块来布局容器界面

//找一个容器 layout

FrameLayout container = findViewById(R.id.f1_main);//通过id找到容器资源

//创建一个子视图

//创建ImaView显示一张图片

ImageView imageViewBackground = new ImageView(this);

//设置属性

imageViewBackground.setBackgroundColor(Color.GREEN);

//添加到容器里面

container.addView(imageViewBackground,200,200);

//设置当前这个界面的内容视图为这个容器

setContentView(container);

如何选择使用两种方式:

xml配置: 如果添加的控件是静态的(变化的内容不多)选择xml配置(安卓推荐使用)

使用Java代码创建 :如果需要灵活的操作这个控件,这个情况下选择代码创建

项目实战-消除图层

思路:使用透明色去替换原有图片中的像素,立刻获取替换之后的图片 将图片显示在ImageView上,这样就可以把消掉上一图层,露出下面的图层,就是把第二张图片的黑色部分去除掉,露出原本的样子。

图片

public class MainActivity extends AppCompatActivity {

ImageView fground;

Bitmap orgBitmap;

Bitmap copyBitmap;

Canvas canvas;

Paint paint;

@Override//创建一个界面 界面如何布局

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//配置界面 容器在xml文件里面

setContentView(R.layout.activity_main);

//找到容器里面的图片资源

fground = findViewById(R.id.iv_fground);

//将需要操作的图片读取出来 bitmap

//BitmapFactory 用于管理位图

// decodeResource从工程的资源路径中生成一张位图

//getResource 获取工程的资源

// R.drawable.bg 获取这个工资源文件下drawable文件中的bg图片

orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.bg);

//操作这个图片,用透明设去替换某个位置的颜色

//不能操作原图 只能copy一份

//创建一个和原始图片相同环境的空位图

copyBitmap = Bitmap.createBitmap(orgBitmap.getWidth(),orgBitmap.getHeight()

,orgBitmap.getConfig());

//创建一个Canvas 画布-现实中的画板

canvas = new Canvas(copyBitmap);

//创建一个画笔

paint = new Paint();

//画一个图

canvas.drawBitmap(orgBitmap,matrix,paint);

//显示图片

fground.setImageBitmap(copyBitmap);

//给前景图片添加touch事件

//当有触摸事件发生,系统就会将这个事件接收,并回调这个事件

fground.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

//获取当前事件

int action = event.getAction();

//判断action的状态

if(action == MotionEvent.ACTION_MOVE){

//获取触摸点的坐标

float x = event.getX();

float y = event.getY();

//替换xy对应的像素

for (int i = -8; i < 8; i++) {

for (int j = -8; j < 8; j++) {

copyBitmap.setPixel((int)x+i,(int)y+j,Color.TRANSPARENT);

}

}

//显示图片

fground.setImageBitmap(copyBitmap);

}

return true;

}

});

}

学习感悟

今天是学习安卓开发的第一天,学的内容并不是很多,但是对于没有多少基础的我来说,搞这么一个项目是有点难,到现在还有一些问题没有解决,我的运行结果就只能消除几个像素点,然后就闪退了。但是现在的学习和之前相比还是好点了,最起码现在写的程序可以看到界面,比之前的编程更有趣了。

android基础开发 书,Android 开发基础相关推荐

  1. 适合新手看的安卓开发书android studio

    第一行代码 Android 第2版 第二版 郭霖 手机app Android 安卓开发从入门到精通程序设计编程教程教材书籍  https://s.click.taobao.com/RkUcrzv 推荐 ...

  2. android 购物车 简书,Android仿饿了么购物车效果

    先看下效果图: ezgif-1-8f133ca916.gif 1.首先列表布局采用Recycleview android:id="@+id/container" android:l ...

  3. android matrix 简书,[Android] ImageView ScaleType完全解析

    ImageView有一个ScaleType的属性,该属性决定了图片在ImageView上的展现形式,包括:是否进行缩放.如何进行缩放.缩放之后图片的摆放位置等等.官方介绍如下: Options for ...

  4. android spinner 简书,Android NiceSpinner

    NiceSpinner 是 Android 端的一款第三方控件,自带箭头动画效果 真的是简单又好用哦!有需要的小伙伴们可以试试啦. 效果图如下: image 1. 导入模块 在 Github 下载并导 ...

  5. Android入门简书,android ndk开发入门随笔(一)

    ndk,jni入门随笔 因为工作缘故最近在研究jni,ndk方面知识,在此总结入坑以来的一些问题. 配置环境可以在下面geogle官方看.下面是链接 我一说ndk,jni可能小伙伴要问了这是什么,在此 ...

  6. android 音乐 简书,Android音频开发(7):音乐可视化-FFT频谱图

    Android 音频开发 目录 一.演示 image 二.实现 实现流程: 使用MediaPlayer播放传入的音乐,并拿到mediaPlayerId 使用Visualizer类拿到拿到MediaPl ...

  7. android xposed 简书,Xposed开发插件环境配置

    1.VirtualXposed VirtualXposed 是基于VirtualApp 和 epic 在非ROOT环境下运行Xposed模块的实现.允许在非Root得环境下使用Xposed框架,实现对 ...

  8. android opengl 简书,Android OpenGL入门

    如今VR这么火,感觉有必要先把OpenGL学好,为以后转VR奠定一些基础.一年前,接触过Android的OpenGL,当时是实现了在Android上显示标准的3D文件(STL格式).现在打算整理一下O ...

  9. android realm 简书,android 数据库SQLite realm

    一.SQLite android内置了数据库SQLite,这是一款轻量级的关系型数据库,通常只需要几百K的内存.数据库文件存放在/data/data//databases/目录下. 为了方便管理数据库 ...

最新文章

  1. 又有3位顶级数学家加盟华为,都是菲尔兹奖得主
  2. 解决TensorBoard训练集和测试集指标只能分开显示的问题(基于Keras)
  3. 机器学习:一种新的编程范式
  4. aix和linux脚本,AIX系统资源监控SHELL脚本
  5. IDEA 配置Maven项目
  6. Web优化 --利用css sprites降低图片请求
  7. 绿盟防火墙配置手册_双链路环境下不同品牌防火墙更换案例分享
  8. flash位图技术研究篇(8):扫描像素点
  9. 别慌,谷歌说AutoML无意取代工程师,AI人才缺口仍然巨大
  10. linux下安装redmine2.5.1详细步骤
  11. 嵌套循环连接(Nested Loops), 合并联接(Merge), 哈希联接(Hash)的适用情况
  12. 视频软件会声会影支持哪些视频格式?
  13. html 字符串 放到webbrowser,delphi 直接将html字符串读入WebBrowser中
  14. ubntu系统克隆到其他计算机的方法
  15. 笔记本电脑电源和电池充电管理电路设计
  16. GRE蓝宝的核心词汇
  17. CDH集群更换ip,主机名
  18. win10系统怎么创建虚拟网卡?
  19. 小程序中wxss设置渐变色背景的方法
  20. 「Sqlserver」数据分析师有理由爱Sqlserver之二-像使用Excel一般地使用Sqlserver

热门文章

  1. 设置DBGridEH自适应列宽的最好方法
  2. 【干货】如何搭建靠谱的数据仓库.pdf(附下载链接)
  3. 【采访】腾讯社交广告高校算法大赛第一周周冠军——郭达雅 比赛经验及心得分享
  4. 【赠书】当深度学习遇上图: 图神经网络的兴起!
  5. 卷积神经网络CNN结构
  6. java string hash变量_java基础(六)-----String性质深入解析
  7. 决策树算法python实现_决策树之python实现ID3算法(例子)
  8. 悬浮球不用权限_Android 实现无需权限的悬浮球效果,可适配至Android 10
  9. jq 批量删除 php,批量删除JQuery获取选中的CheckBox值
  10. 面试招聘——操作系统专场(一)