1. 认识Android开发环境
在开始实战之前,我们需要先了解如何搭建Android开发环境。以下是一些基本步骤:
- 下载并安装Android Studio。
- 创建一个新的Android项目。
- 配置模拟器或连接真实设备进行测试。
1.1 下载与安装Android Studio
Android Studio是Android开发的官方IDE,它提供了丰富的工具和功能,可以帮助开发者更高效地完成开发工作。以下是下载与安装Android Studio的步骤:
- 访问Android Studio官网:https://developer.android.com/studio/
- 下载适合你操作系统的Android Studio版本。
- 双击下载的文件,按照提示进行安装。
1.2 创建新项目
安装完成后,打开Android Studio,按照以下步骤创建一个新的Android项目:
- 选择“Start a new Android Studio project”。
- 选择项目模板,例如“Empty Activity”。
- 输入项目名称、保存位置等信息。
- 选择API级别、语言(Java或Kotlin)等配置。
- 点击“Finish”完成项目创建。
1.3 配置模拟器或连接真实设备
为了测试你的应用,需要配置模拟器或连接真实设备。以下是一些基本步骤:
- 在Android Studio中,选择“Tools” -> “AVD Manager”来创建或管理模拟器。
- 点击“Create Virtual Device”来创建一个新的模拟器。
- 选择设备、系统版本、分辨率等信息。
- 点击“Next”和“Finish”完成模拟器的创建。
- 连接真实设备:打开设备的开发者选项,确保USB调试已开启。在Android Studio中,选择“Run” -> “Connect Device”来连接设备。
2. 实战案例1:简单的计算器
在这个案例中,我们将创建一个简单的计算器,可以执行基本的加减乘除运算。
2.1 设计界面
首先,我们需要设计计算器的界面。在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"
tools:context=".MainActivity">
<EditText
android:id="@+id/etResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入表达式"
android:inputType="numberDecimal"
android:padding="10dp"
android:gravity="right" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:layout_below="@id/etResult"
android:layout_margin="5dp" />
<!-- 添加其他数字和运算符按钮 -->
</RelativeLayout>
2.2 编写代码
接下来,我们需要编写MainActivity.java文件中的代码,以实现计算器的功能。
public class MainActivity extends AppCompatActivity {
private EditText etResult;
private Button btn1;
// 添加其他按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etResult = findViewById(R.id.etResult);
btn1 = findViewById(R.id.btn1);
// 初始化其他按钮
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
etResult.setText(etResult.getText().toString() + "1");
}
});
// 设置其他按钮的点击事件
}
}
3. 实战案例2:列表视图
在这个案例中,我们将使用ListView组件来展示一个简单的列表。
3.1 设计界面
在activity_main.xml文件中,添加以下代码:
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.2 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
String[] items = {"Item 1", "Item 2", "Item 3"};
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
}
}
4. 实战案例3:图片显示
在这个案例中,我们将展示如何加载和显示一张图片。
4.1 设计界面
在activity_main.xml文件中,添加以下代码:
<ImageView
android:id="@+id/ivImage"
android:layout_width="match_parent"
android:layout_height="match_parent" />
4.2 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private ImageView ivImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivImage = findViewById(R.id.ivImage);
// 加载图片
Picasso.get().load("https://example.com/image.jpg").into(ivImage);
}
}
5. 实战案例4:网络请求
在这个案例中,我们将使用OkHttp库来发送网络请求,并获取JSON数据。
5.1 添加依赖
在build.gradle文件中,添加以下依赖:
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
}
5.2 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private OkHttpClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = new OkHttpClient();
String url = "https://example.com/data.json";
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 处理请求失败
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String responseData = response.body().string();
// 处理响应数据
}
});
}
}
6. 实战案例5:数据库存储
在这个案例中,我们将使用SQLite数据库来存储和查询数据。
6.1 创建数据库
首先,创建一个名为MyDatabaseHelper的类,继承自SQLiteOpenHelper:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mydatabase.db";
private static final int DATABASE_VERSION = 1;
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 处理数据库升级
}
}
6.2 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private MyDatabaseHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dbHelper = new MyDatabaseHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "张三");
db.insert("mytable", null, values);
// 查询数据
}
}
7. 实战案例6:Toast提示
在这个案例中,我们将展示如何使用Toast来显示简单的提示信息。
7.1 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this, "这是一个Toast提示", Toast.LENGTH_SHORT).show();
}
}
8. 实战案例7:Activity跳转
在这个案例中,我们将展示如何使用Intent进行Activity跳转。
8.1 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
}
创建SecondActivity.java文件,实现第二个Activity:
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
创建activity_second.xml文件,设计第二个Activity的界面:
<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"
tools:context=".SecondActivity">
<TextView
android:id="@+id/tvMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第二个Activity"
android:layout_centerInParent="true" />
</RelativeLayout>
9. 实战案例8:自定义View
在这个案例中,我们将创建一个自定义View,用于显示一个简单的图形。
9.1 创建自定义View
创建一个名为MyView的类,继承自View:
public class MyView extends View {
public MyView(Context context) {
super(context);
init();
}
private void init() {
// 初始化自定义View的属性
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 绘制图形
}
}
9.2 使用自定义View
在activity_main.xml文件中,添加以下代码:
<MyView
android:id="@+id/myView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myView = findViewById(R.id.myView);
// 设置自定义View的属性
}
}
10. 实战案例9:Fragment使用
在这个案例中,我们将展示如何使用Fragment来构建多界面应用。
10.1 创建Fragment
创建一个名为MyFragment的类,继承自Fragment:
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
// 初始化Fragment的视图
return view;
}
}
创建fragment_my.xml文件,设计Fragment的界面:
<FrameLayout 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"
tools:context=".MyFragment">
<TextView
android:id="@+id/tvMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是Fragment"
android:layout_centerInParent="true" />
</FrameLayout>
10.2 使用Fragment
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private MyFragment myFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
myFragment = new MyFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.container, myFragment)
.commit();
}
}
}
创建activity_main.xml文件,设计MainActivity的界面:
<FrameLayout 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"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
11. 实战案例10:权限申请
在这个案例中,我们将展示如何向用户申请权限。
11.1 编写代码
在MainActivity.java文件中,添加以下代码:
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_CONTACTS},
REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 权限申请成功,执行相关操作
} else {
// 权限申请失败,提示用户
}
}
}
}
以上是从零开始学Android编程的10个实战案例,希望对你有所帮助。在学习过程中,不断实践和总结,相信你会成为一名优秀的Android开发者。
