1. 认识Android开发环境

在开始实战之前,我们需要先了解如何搭建Android开发环境。以下是一些基本步骤:

  1. 下载并安装Android Studio。
  2. 创建一个新的Android项目。
  3. 配置模拟器或连接真实设备进行测试。

1.1 下载与安装Android Studio

Android Studio是Android开发的官方IDE,它提供了丰富的工具和功能,可以帮助开发者更高效地完成开发工作。以下是下载与安装Android Studio的步骤:

  1. 访问Android Studio官网:https://developer.android.com/studio/
  2. 下载适合你操作系统的Android Studio版本。
  3. 双击下载的文件,按照提示进行安装。

1.2 创建新项目

安装完成后,打开Android Studio,按照以下步骤创建一个新的Android项目:

  1. 选择“Start a new Android Studio project”。
  2. 选择项目模板,例如“Empty Activity”。
  3. 输入项目名称、保存位置等信息。
  4. 选择API级别、语言(Java或Kotlin)等配置。
  5. 点击“Finish”完成项目创建。

1.3 配置模拟器或连接真实设备

为了测试你的应用,需要配置模拟器或连接真实设备。以下是一些基本步骤:

  1. 在Android Studio中,选择“Tools” -> “AVD Manager”来创建或管理模拟器。
  2. 点击“Create Virtual Device”来创建一个新的模拟器。
  3. 选择设备、系统版本、分辨率等信息。
  4. 点击“Next”和“Finish”完成模拟器的创建。
  5. 连接真实设备:打开设备的开发者选项,确保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开发者。