Android?Studio實現(xiàn)簡易計算器設(shè)計
本文實例為大家分享了Android Studio實現(xiàn)簡易計算器的具體代碼,供大家參考,具體內(nèi)容如下
一、題目
1、如圖所示(實際設(shè)計,類似此界面樣式即可,全屏?xí)r,按鈕將會縱向拉伸),利用網(wǎng)格布局管理器設(shè)計一個居中、滿屏計算器,項目名稱:clc666b;(666,改成自己的實際編號)
2、加、乘分別用2個單選按鈕進(jìn)行選擇;
3、為clc666b編寫程序(clc666a不需要編程,只設(shè)計界面即可),根據(jù)選擇的加(乘)單選按鈕,實現(xiàn)兩個數(shù)的加法和乘法的簡單計算。
4、為了簡化程序設(shè)計,上方的數(shù)據(jù)區(qū)也可以設(shè)計成3個文本框(如果一個文本框?qū)崿F(xiàn)功能,則更好),分別用作被(乘)加數(shù)、加(乘)數(shù)、合(積);
二、分析
1.首要的目標(biāo)是先做一個窗口,窗口設(shè)計需要滿屏平分,所以要修改每一個部件的權(quán)重。
2.java程序設(shè)計,要監(jiān)聽不同種類的按鍵,網(wǎng)上基本上都是普通按鍵的程序,沒有radiobutton的,這個題目對于我這種新手來說有點不太友好,不能直接抄網(wǎng)上的,還要根據(jù)老師上課講的改一改。
(1)當(dāng)按下數(shù)字按鍵時,把按鍵所對應(yīng)的數(shù)字存到一個字符串中,然后更新text。
(2)如果按下刪除的時候把字符串最后一個字符刪去即可,然后更新text.。
(3)當(dāng)按下運算符號鍵時,把前面的字符存在一個字符串a(chǎn)中,并保存運算符號鍵的id地址。
(4)繼續(xù)進(jìn)行前兩步的操作,直到按下等于號鍵運行(5)。
(5)把運算符號后的給字符串b,根據(jù)id來對a和b進(jìn)行運算,更新text。
三、代碼
1.更新后的xml代碼
<?xml version="1.0" encoding="utf-8"?> <GridLayout 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" ? ? android:layout_row="6" ? ? android:layout_column="3" ? ? android:background="#FF0097A7" ? ? tools:context=".MainActivity"> ? ? ? <TextView ? ? ? ? android:id="@+id/textview1" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="2" ? ? ? ? android:layout_columnSpan="3" ? ? ? ? android:layout_columnWeight="3" ? ? ? ? android:background="#F1D5A2" ? ? ? ? android:text=" " ? ? ? ? android:textSize="30sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/nm1" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="3" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="1" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/nm2" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="2" ? ? ? ? android:textSize="36sp" /> ? ? ? <RadioGroup ? ? ? ? android:id="@+id/radioGroup2" ? ? ? ? android:layout_width="wrap_content" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:layout_rowSpan="2" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:layout_gravity="center"> ? ? ? ? ? <RadioButton ? ? ? ? ? ? android:id="@+id/mul" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_rowWeight="1" ? ? ? ? ? ? android:layout_columnWeight="1" ? ? ? ? ? ? android:checked="false" ? ? ? ? ? ? android:text="×" ? ? ? ? ? ? android:textSize="36sp" /> ? ? ? ? ? <RadioButton ? ? ? ? ? ? android:id="@+id/add" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_rowWeight="1" ? ? ? ? ? ? android:layout_columnWeight="1" ? ? ? ? ? ? android:checked="false" ? ? ? ? ? ? android:text="+" ? ? ? ? ? ? android:textSize="36sp" /> ? ? ? </RadioGroup> ? ? ? <Button ? ? ? ? android:id="@+id/nm3" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="4" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="3" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/del" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="DEL" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/equ" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="5" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="2" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="=" ? ? ? ? android:textSize="36sp" /> ? </GridLayout>
2.更新后的java代碼
package com.example.lenovo.clc231b; ? import androidx.appcompat.app.AppCompatActivity; ? import android.os.Bundle; import android.view.View; import android.widget.Button; import android.view.View.OnClickListener; import android.widget.TextView; ? public class MainActivity extends AppCompatActivity { ? ? ? private String num = ""; ? ? private String num_zong = ""; ? ? private int fore,back,lenth,id; ? ? TextView textview1; ? ? Button nm1; ? ? Button nm2; ? ? Button nm3; ? ? Button del; ? ? Button equ; ? ? Button mul; ? ? Button add; ? ? ? @Override ? ? public void onCreate(Bundle savedInstanceState) { ? ? ? ? super.onCreate(savedInstanceState); ? ? ? ? setContentView(R.layout.activity_main); ? ? ? ? ? textview1=(TextView)findViewById(R.id.textview1); ? ? ? ? ? nm1 = (Button)findViewById(R.id.nm1); ? ? ? ? nm2 = (Button)findViewById(R.id.nm2); ? ? ? ? nm3 = (Button)findViewById(R.id.nm3); ? ? ? ? del = (Button)findViewById(R.id.del); ? ? ? ? equ = (Button)findViewById(R.id.equ); ? ? ? ? mul = (Button)findViewById(R.id.mul); ? ? ? ? add = (Button)findViewById(R.id.add); ? ? ? ? ? nm1.setOnClickListener(listener); ? ? ? ? nm2.setOnClickListener(listener); ? ? ? ? nm3.setOnClickListener(listener); ? ? ? ? del.setOnClickListener(listener); ? ? ? ? equ.setOnClickListener(listener); ? ? ? ? mul.setOnClickListener(listener); ? ? ? ? add.setOnClickListener(listener); ? ? ? } ? ? //監(jiān)聽按鈕 ? ? public OnClickListener listener = new OnClickListener() { ? ? ? ? @Override ? ? ? ? public void onClick(View view) { ? ? ? ? ? ? switch (view.getId()){ ? ? ? ? ? ? ? ? case R.id.nm1: ? ? ? ? ? ? ? ? ? ? number(1); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.nm2: ? ? ? ? ? ? ? ? ? ? number(2); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.nm3: ? ? ? ? ? ? ? ? ? ? number(3); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.del: ? ? ? ? ? ? ? ? ? ? delete(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.equ: ? ? ? ? ? ? ? ? ? ? result(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.mul: ? ? ? ? ? ? ? ? ? ? Get_mul_add(1); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.add: ? ? ? ? ? ? ? ? ? ? Get_mul_add(2); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? textview1.setText(num); ? ? ? ? } ? ? }; ? ? ? private void Get_mul_add(int flag){ ? ? ? ? fore = Integer.valueOf(num); ? ? ? ? if(flag == 1) { ? ? ? ? ? ? id = R.id.mul; ? ? ? ? ? ? num += "×"; ? ? ? ? } ? ? ? ? else { ? ? ? ? ? ? id = R.id.add; ? ? ? ? ? ? num += "+"; ? ? ? ? } ? ? ? ? textview1.setText(num); ? ? ? ? lenth = num.length(); ? ? } ? ? ? private void result() { ? ? ? ? num_zong = num; ? ? ? ? num = num.substring(lenth); ? ? ? ? back = Integer.valueOf(num); ? ? ? ? if(id == R.id.mul) ? ? ? ? ? ? num = String.valueOf((fore*back)); ? ? ? ? else ? ? ? ? ? ? num = String.valueOf((fore+back)); ? ? ? ? num = num_zong + "=" + num; ? ? } ? ? ? private void delete() { ? ? ? ? num = num.substring(0,num.length()-1); ? ? } ? ? ? private void number(int i) { ? ? ? ? num += i; ? ? } }
3.原來的代碼
<?xml version="1.0" encoding="utf-8"?> <GridLayout 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" ? ? android:layout_row="6" ? ? android:layout_column="3" ? ? android:background="#FF0097A7" ? ? tools:context=".MainActivity"> ? ? ? <TextView ? ? ? ? android:id="@+id/textview1" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="3" ? ? ? ? android:layout_columnSpan="3" ? ? ? ? android:layout_columnWeight="3" ? ? ? ? android:background="#F1D5A2" ? ? ? ? android:text=" " ? ? ? ? android:textSize="30sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/button1" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="3" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="1" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/button2" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="2" ? ? ? ? android:textSize="36sp" /> ? ? ? <RadioGroup ? ? ? ? android:id="@+id/radioGroup2" ? ? ? ? android:layout_width="wrap_content" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? android:layout_rowSpan="2" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:layout_gravity="center"> ? ? ? ? ? <RadioButton ? ? ? ? ? ? android:id="@+id/r1" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_rowWeight="1" ? ? ? ? ? ? android:layout_columnWeight="1" ? ? ? ? ? ? android:checked="false" ? ? ? ? ? ? android:text="×" ? ? ? ? ? ? android:textSize="36sp" /> ? ? ? ? ? <RadioButton ? ? ? ? ? ? android:id="@+id/r2" ? ? ? ? ? ? android:layout_width="wrap_content" ? ? ? ? ? ? android:layout_height="wrap_content" ? ? ? ? ? ? android:layout_rowWeight="1" ? ? ? ? ? ? android:layout_columnWeight="1" ? ? ? ? ? ? android:checked="false" ? ? ? ? ? ? android:text="+" ? ? ? ? ? ? android:textSize="36sp" /> ? ? </RadioGroup> ? ? ? <Button ? ? ? ? android:id="@+id/button3" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="4" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="3" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/button4" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_columnSpan="1" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="DEL" ? ? ? ? android:textSize="36sp" /> ? ? ? <Button ? ? ? ? android:id="@+id/button5" ? ? ? ? android:layout_width="0dp" ? ? ? ? android:layout_height="0dp" ? ? ? ? android:layout_row="5" ? ? ? ? android:layout_rowSpan="1" ? ? ? ? android:layout_rowWeight="1" ? ? ? ? android:layout_column="0" ? ? ? ? android:layout_columnSpan="2" ? ? ? ? android:layout_columnWeight="1" ? ? ? ? android:text="=" ? ? ? ? android:textSize="36sp" /> ? </GridLayout>
package com.example.lenovo.clc231b; ? import androidx.appcompat.app.AppCompatActivity; ? import android.os.Bundle; import android.view.View; import android.widget.Button; import android.view.View.OnClickListener; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; ? public class MainActivity extends AppCompatActivity { ? ? ? private String num = ""; ? ? private String num_zong = ""; ? ? private int fore,back,lenth,id; ? ? TextView textview1; ? ? RadioGroup question2; ? ? Button button1; ? ? Button button2; ? ? Button button3; ? ? Button button4; ? ? Button button5; ? ? ? @Override ? ? public void onCreate(Bundle savedInstanceState) { ? ? ? ? super.onCreate(savedInstanceState); ? ? ? ? setContentView(R.layout.activity_main); ? ? ? ? ? textview1=(TextView)findViewById(R.id.textview1); ? ? ? ? ? button1 = (Button)findViewById(R.id.button1); ? ? ? ? button2 = (Button)findViewById(R.id.button2); ? ? ? ? button3 = (Button)findViewById(R.id.button3); ? ? ? ? button4 = (Button)findViewById(R.id.button4); ? ? ? ? button5 = (Button)findViewById(R.id.button5); ? ? ? ? question2 = (RadioGroup) findViewById(R.id.radioGroup2); ? ? ? ? ? button1.setOnClickListener(listener); ? ? ? ? button2.setOnClickListener(listener); ? ? ? ? button3.setOnClickListener(listener); ? ? ? ? button4.setOnClickListener(listener); ? ? ? ? button5.setOnClickListener(listener); ? ? ? ? question2.setOnClickListener(listener); ? ? ? } ? ? ? public OnClickListener listener = new OnClickListener() { ? ? ? ? @Override ? ? ? ? public void onClick(View view) { ? ? ? ? ? ? switch (view.getId()){ ? ? ? ? ? ? ? ? case R.id.button1: ? ? ? ? ? ? ? ? ? ? number(1); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.button2: ? ? ? ? ? ? ? ? ? ? number(2); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.button3: ? ? ? ? ? ? ? ? ? ? number(3); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.button4: ? ? ? ? ? ? ? ? ? ? delete(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case R.id.button5: ? ? ? ? ? ? ? ? ? ? result(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? ? ? ? question2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { ? ? ? ? ? ? ? ? @Override ? ? ? ? ? ? ? ? public void onCheckedChanged(RadioGroup group, int checkedId) { ? ? ? ? ? ? ? ? ? ? //獲取被選擇的單選按鈕 ? ? ? ? ? ? ? ? ? ? RadioButton r = (RadioButton) findViewById(checkedId); ? ? ? ? ? ? ? ? ? ? //Toast.makeText(MainActivity.this,"你的愛好是:" + r.getText(), Toast.LENGTH_SHORT).show(); ? ? ? ? ? ? ? ? ? ? id = r.getId(); ? ? ? ? ? ? ? ? ? ? textview1.setText(num + r.getText()); ? ? ? ? ? ? ? ? ? ? fore = Integer.valueOf(num); ? ? ? ? ? ? ? ? ? ? num = num+ r.getText(); ? ? ? ? ? ? ? ? ? ? lenth = num.length(); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }); ? ? ? ? ? ? textview1.setText(num); ? ? ? ? } ? ? }; //乘號id是2131165311 ?加號id是2131165312 ? ? private void result() ? ? { ? ? ? ? num_zong = num; ? ? ? ? num = num.substring(lenth); ? ? ? ? back = Integer.valueOf(num); ? ? ? ? if(id == 2131165311) ? ? ? ? ? ? num = String.valueOf((fore*back)); ? ? ? ? else ? ? ? ? ? ? num = String.valueOf((fore+back)); ? ? ? ? num = num_zong + "=" + num; ? ? } ? ? ? private void delete(){ ? ? ? ? num = num.substring(0,num.length()-1); ? ? } ? ? ? private void number(int i){ ? ? ? ? num = num + i; ? ? } }
四、總結(jié)
運行必須按照流程來,不然app會崩潰,不想改了,累了,對我這樣的新手不太友好。
五、參考文章
(更新后,更改了一些參數(shù)定義名稱,更加直觀,更改了一些函數(shù)內(nèi)容,減少冗余度)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android?Studio實現(xiàn)帶三角函數(shù)對數(shù)運算功能的高級計算器
- Android Studio實現(xiàn)簡易進(jìn)制轉(zhuǎn)換計算器
- android?studio實現(xiàn)簡單的計算器小功能
- Android studio實現(xiàn)簡易計算器App功能
- 用Android?studio實現(xiàn)簡易計算器功能
- android?studio?項目?:UI設(shè)計高精度實現(xiàn)簡單計算器
- Android studio實現(xiàn)簡單的計算器
- Android Studio實現(xiàn)簡單計算器功能
- Android Studio實現(xiàn)簡易計算器(表格布局TableLayout)
- Android?Studio實現(xiàn)簡易計算器App?(Java語言版)
相關(guān)文章
Android使用線程獲取網(wǎng)絡(luò)圖片的方法
這篇文章主要為大家詳細(xì)介紹了Android使用線程獲取網(wǎng)絡(luò)圖片的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06Android實現(xiàn)背景可滑動登錄界面 (不壓縮背景彈出鍵盤)
這篇文章主要介紹了Android實現(xiàn)背景可滑動登錄界面 (不壓縮背景彈出鍵盤),需要的朋友可以參考下2017-04-04Android自定義view利用PathEffect實現(xiàn)動態(tài)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義view利用PathEffect實現(xiàn)動態(tài)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05android系統(tǒng)拍照結(jié)合android-crop裁剪圖片
這篇文章主要為大家詳細(xì)介紹android系統(tǒng)拍照結(jié)合android-crop裁剪圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01Android中使用AsyncTask做下載進(jìn)度條實例代碼
這篇文章主要介紹了Android中使用AsyncTask做下載進(jìn)度條實例代碼的相關(guān)資料,這里附有實例代碼,具有一定參考價值,需要的朋友可以參考下2017-01-01Android shape和selector 結(jié)合使用實例代碼
本篇文章主要介紹了Android shape和selector 的使用,這里提供了shape 和selector 的詳細(xì)介紹,并附有代碼實例,有興趣的朋友可以參考下2016-07-07Android利用WindowManager實現(xiàn)懸浮窗
這篇文章主要為大家詳細(xì)介紹了Android利用WindowManager實現(xiàn)懸浮窗效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07Android中ImageCropper矩形、圓形 裁剪框的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Android中ImageCropper矩形、圓形 裁剪框的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2018-07-07Flutter+Metal實現(xiàn)圖像處理詳細(xì)流程
Flutter使用CVPixelBuffer和iOS交互,我們可以直接使用CVPixelBuffer創(chuàng)建MTLTexture,然后將MTLTexture設(shè)置為渲染目標(biāo),這篇文章主要介紹了Flutter+Metal實現(xiàn)圖像處理,需要的朋友可以參考下2022-06-06