AndroidStudio

一 安卓开发环境搭建
1.1 环境介绍
# 做安卓开发,需要会 Java 开发,需要安卓 SDK ,需要一款编辑器,需要软件测试环境 ( 真机,虚拟机 )
# 早期开发安卓 app ,需要使用 eclipse+ 安卓 SDK ,自己搭建
# 目前开发安卓 app ,只需安装 AndroidStudio ,可以直接通过 AndroidStudio 下载 SDK
# 编写完的代码要运行
- 使用 AndroidStudio 自带的安卓虚拟机
- 使用网易 mumu ,夜神模拟器等虚拟机
- 使用真机(推荐),只要是安卓手机,开发 usb 调试,不需要 root 就可以使用
1.1 安卓集成开发环境
1.1.1 下载 AndroidStudio
# 官方下载
# 历史版本下载
https : // developer . android . google . cn / studio / archive ? hl = zh - cn
# 最新版本下载
https : // developer . android . google . cn / studio
# 官方提供的使用教程
https : // developer . android . google . cn / studio / intro ? hl = zh - cn
# 项目构建工具介绍
Gradle Maven 都是 Java 项目的构建工具,但它们有一些区别:
1. 语法: Gradle 使用 Groovy 语言进行编写,而 Maven 使用 XML Groovy 更加灵活易读, XML 更加严谨易于
用。
2. 性能: Gradle Maven 更加高效快速,因为它使用了增量构建模式,只会重新构建被更改的模块,而 Mav
则需要重新构建整个项目。
3. 插件: Gradle 的插件生态更加丰富和现代化,而 Maven 的插件相对较为传统。此外, Gradle 的插件可以非
容易地编写和定制,而 Maven 的插件相对繁琐。
4. 维护: Maven 有比较成熟的工具链和文档支持,而 Gradle 则相对较新,可能需要更多的自学
# Groovy 介绍 Groovy 是一种基于 JVM Java 虚拟机)的敏捷开发语言,它结合了 Python Ruby Smalltalk 的许多强大
特性, Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码
1.1.2 安装 AndriodStudio
# 安装 Android 步骤很简单,一路下一步即可
# 注意中间需要选择是否安装安装虚拟机(可以选择安装也可以不安装),如果使用真机调试,就不需要安卓虚
拟机
# 注意选择安装路径
1.1.5 配置环境变量
# SDK 的安装目录下,有很多文件夹,如下
我们把 emulator paltform - tools 目录加入到环境变量
── . gradle #AndroidStudio 自动生成的文件,会自动修改它的,
目打包时也会删除;
├── . idea # AndroidStudio 自动生成的文件,会自动修改它的,
目打包时也会删除;
├── app # 应用相关的东西都在里面,工作的核心目录
│ ├── build # 编译的产物。某些情况下,可以手动把它整个删掉。
│ ├── libs # 依赖包可以放这里,比如一些 jar 文件。
│ ├── src # 代码在这。非常重要。
│ │ ├── main
│ │ │ ├── java # Java 代码的地方
│ │ │ ├── res
│ │ │ │ ├── drawable # 应用图标
│ │ │ │ ├── layout # Android 布局文件夹
│ │ │ │ ├── mipmap # 适配不同分辨率的手机
│ │ │ │ ├── mipmap # 桌面图标
│ │ │ │ └── values # 颜色、样式、字符集配置文件夹
│ │ │ ├──AndroidManifest . xml #APP 运行配置文件 , 用来配置权限:程序入
配置、应用程序主题、应用程序组件等
│ ├── . gitignore # 版本控制
│ ├── build . gradle # 非常重要, app 的构建配置。俗称 “app
gradle 文件
│ └── proguard - rules . pro # 不管。这个是混淆配置。
├── gradle # 它是一个构建起配置文件
├── . gitignore # 整个工程的版本控制
├── build . gradle # 很重要。项目级的配置。俗称 项目 grad
文件
├── gradle . properties # 全局的 gradle 配置文件 ├── gradlew # Linux/mac 上执行 gradle 命令
├── gradlew . bat # Windows 上执行 gradle 命令
├── local . properties # 本地配置文件,一般不上传
└── settings . gradle # gralde 的项目级配置
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MainActivity" >
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#dddddd"
android:orientation = "vertical" >
<ImageView
android:layout_width = "match_parent"
android:id = "@+id/image"
android:layout_height = "300dp"
android:src = "@color/pink" />
<Button
android:layout_width = "match_parent"
android:layout_height = "wrap_content" android:id = "@+id/button01"
android:text = " 点击更换美女 " ></Button>
</LinearLayout>
</LinearLayout>
3.3 java(MainActivity.java)
package com.justin.justinapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button button01;
private ImageView image ;
private int id=R.drawable.a;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button01=findViewById(R.id.button01);
image=findViewById(R.id.image);
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"弹出吐
司",Toast.LENGTH_LONG).show();
if(id==R.drawable.a)
id=R.drawable.b;
else if(id==R.drawable.b)
id=R.drawable.c;
else {
id=R.drawable.a;
}
image.setImageResource(id);
}
});
}
}

















# 安卓的网络加载,必须开启一个新的线程去做,主线程负责更新ui
# 1 手机要能上网
# 2 代理关闭
# 3 AndroidManifest.xml配置上网权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
package com.justin.s9demo01;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
private Button button01; // 用来接受页面中的button
private ImageView image; // 用来接受页面中的Image
private int id = R.drawable.a;
private URL url = null;
private Bitmap bitmap = null;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); // 让这个java文件跟
activity_main.xml对应上
// //1 取到页面中的button和image
// button01 = findViewById(R.id.button); // 去activity_main根据id找组件
// image = findViewById(R.id.image);
// image.setImageResource(this.id);
// // 2 给按钮绑定事件,以后点击按钮,就会执行
// button01.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// // 点击一次,弹出个吐司
// Toast.makeText(MainActivity.this, "换美女了",
Toast.LENGTH_LONG).show();
// // 点一下按钮,id变量,切换一下
// if (id == R.drawable.a) {
// id = R.drawable.b;
// } else if (id == R.drawable.b) {
// id = R.drawable.c;
// } else {
// id = R.drawable.a;
// }
//
// image.setImageResource(id);
// }
// });
//
//
// }
// 加载网络图片
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 让这个java文件跟activity_main.xm
对应上
//1 取到页面中的button和image
button01 = findViewById(R.id.button); // 去activity_main根据id找组件
image = findViewById(R.id.image);
image.setImageResource(this.id);
// 2 给按钮绑定事件,以后点击按钮,就会执行
button01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 点击一次,弹出个吐司
Toast.makeText(MainActivity.this, "换美女了",
Toast.LENGTH_LONG).show();
try {
url = new
URL("https://lmg.jj20.com/up/allimg/tx28/03102423387976.png");
requestImage(url);
} catch (Exception e) {
Log.e("justin", e.toString());
}
}
});
}
private void requestImage(URL url) {
// 开启新线程加载网络图片
new Thread() {
@Override
public void run() {
try {
bitmap = BitmapFactory.decodeStream(url.openStream());
showImg();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
private void showImg() {
// 更新ui,必须在主线程中
runOnUiThread(new Runnable() {
@Override
public void run() {
image.setImageBitmap(bitmap);
}
});
}
}

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值