day08 8.3 安卓开发项目实战

开发自己的第一款APP-切换图片

【1】编写步骤

1 打开androidStudio,新建一个项目

2 adnrodistudion中有两种视图

  • android:以后开发,经常看它
  • project:有时候找一些文件,看它, 标准文件夹结构

3 编写代码

  • activity_main.xml:
    • 编写xml,安卓页面的布局
    • 相当于前端的html
  • MainActivity:
    • 编写java,向后端发送请求,点击事件,滑动...
    • 相当于前端js代码

4 点击运行app,可以运行在真机上

【2】设置页面排版

  • app/res/layout/activity_main.xml文件中书写代码,排版页面
<?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/black"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/button01"
            android:text="点击更换美女"></Button>


    </LinearLayout>

</LinearLayout>

  • 可以点击右上角的 Code/Split/Design 切换显示不同的模式
    • Code
      • 纯代码编辑页面
    • Split
      • 代码和页面两侧分开
    • Design
      • 纯页面编辑

【3】准备图片

  • 如果是本地的静态图片,可以选择放在 app/res/drawable 文件夹下
    • 建议再自建一个 img文件夹存放图片
  • 一般这个drawable文件夹就是存放本地静态文件的文件夹

【4】书写页面逻辑

  • app\src\main\java\com\dream\changeimg\MainActivity.java 文件中的 MainActivity.java 文件内书写主要的逻辑代码
package com.dream.changeimg;

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;

import com.dream.changeimg.R;


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 if(id==R.drawable.c)
                    id=R.drawable.d;
                else if(id==R.drawable.d)
                    id=R.drawable.e;
                else if(id==R.drawable.e)
                    id=R.drawable.f;
                else {
                    id=R.drawable.a;
                }
                image.setImageResource(id);
            }
        });

    }

}
  • 注意这里需要在 drawable 文件夹下放名为 abcdef 的六张图片

【5】运行项目

  • 点击更换美女可以依次切换图片

【6】迭代版本(可显示网络图片)

  • app\src\main\java\com\dream\changeimg\MainActivity.java 文件中的 MainActivity 文件内书写主要的逻辑代码
package com.dream.changeimg;

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 com.dream.changeimg.R;

import java.net.URL;


public class MainActivity extends AppCompatActivity {

    private Button button01;
    private ImageView image;
    URL url = null;
    Bitmap bitmap = null;

    @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();
                try {
                    url = new URL("https://lmg.jj20.com/up/allimg/tx28/03102423387976.png");
                    requestImage(url);
                } catch (Exception e) {
                    Log.e("错误显示", 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() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                image.setImageBitmap(bitmap);
            }
        });

    }

}

posted @ 2023-07-16 15:23  Chimengmeng  阅读(25)  评论(0)    收藏  举报