国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android Studio開發(fā)基礎(chǔ)知識(持續(xù)更新中~)

這篇具有很好參考價(jià)值的文章主要介紹了Android Studio開發(fā)基礎(chǔ)知識(持續(xù)更新中~)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

閱讀本文需要有Java前端的基礎(chǔ),本文是我學(xué)習(xí)Android時(shí)的筆記。

一、UI開發(fā)

AS快捷鍵

Info Key
復(fù)制行 Ctrl+D
刪除行 Ctrl+Y
注釋 Ctrl+/
注釋2 Ctrl+Shift+/
撤銷 Ctrl+Z
恢復(fù) Ctrl+Shift+Z
顯示結(jié)構(gòu) Ctrl+F12
格式化代碼 Ctrl+Alt+L
打開設(shè)置 Ctrl+Alt+S
自動補(bǔ)全代碼 Ctrl+Shift+Space
自動導(dǎo)包 Alt+Enter

布局

1.線性布局(LinearLayout)

一些重要屬性

//控制子控件的排列方向

orientation="vertical"    //垂直
orientation="horizontal"    //水平

//設(shè)置權(quán)重(權(quán)重總和為分母,可用于屏幕按鈕的適配)

layout_weight="1"

2.相對布局(RelaviteLayout)

Layout下的控件屬性

控件位置 Info
layout_centerInParent 位于 父的 正中央
layout_centerVertical 位于 父的 垂直中
layout_centerHorizontal 位于 父的 水平中
layout_above 位于 某的 上
layout_below 位于 某的 下
layout_toLeftOf 位于 某的 左
layout_toRightOf 位于 某的 右
layout_alignParentTop 是否與父 頂 對齊
layout_alignParentLeft 是否與父 左 對齊
layout_alignParentRight 是否與父 右 對齊
layout_alignParentBottom 是否與父 底 對齊
layout_alignTop 與某的 上 對齊
layout_alignLeft 與某的 左 對齊
layout_alignRight 與某的 下 對齊
layout_alignBottom 與某的 右 對齊

與前端CSS類似

控件間距(Margin) 布局內(nèi)邊距(Padding)
layout_marginTop paddingTop
layout_marginBottom paddingBottom
layout_marginLeft paddingLeft
layout_marginRight paddingRight
padding

3.針布局(FrameLayout)

該布局為每個(gè)加入其中的控件創(chuàng)建一個(gè)空白區(qū)域(稱為一幀,每個(gè)控件占據(jù)一幀),所以控件默認(rèn)顯示在左上角,先放的在最底層。

Key Info
foreground 設(shè)置容器的前景圖
foregroundGravity 設(shè)置前景圖顯示位置

4.表格布局(TableLayout)

需要和TableRow標(biāo)簽配合使用,TableRow的數(shù)量決定表格的行數(shù)。

布局屬性 Info
stretchColumns 設(shè)置列可 拉伸
shrinkColumns 設(shè)置列可 收縮
collapseColumns 設(shè)置列可 隱藏
控件屬性 Info
layout_column 在控件少于單元格的情況下,指定顯示的位置
layout_span 默認(rèn)為1,可指定控件占幾個(gè)單元格

5.絕對布局(AbsoluteLayout)

//布局屬性
layout_x = "50dp";
layout_y = "100dp";

常用控件

1.TextView

控件屬性 Info
text
textColor
textSize sp
textStyle bold,italic
gravity 文本位置
layout_width 控件高
layout_height wrap_content , match_parent
height 文本域高( 不常用)
width 文本域?qū)挘?不常用)
maxLength 文本最大長度
phoneNumber 以電話形式顯示
password 以密碼形式顯示

2.EditView

控件屬性 Info
hint 提示文本
lines 設(shè)置固定行高
maxLines 最大行數(shù)
minLines 最小行數(shù)
password 以密碼形式顯示
phoneNumber 以電話形式顯示
scrollHorizontally 水平滾動條
capitalize 首字母大寫
editable 是否可編輯

background="@null"屬性為去掉控件默認(rèn)的下劃線

3.Button

點(diǎn)擊事件的兩種實(shí)現(xiàn)方法

	<Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
        
	//onClick方法已經(jīng)棄用了
    <Button
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click"/>

	//lambda表達(dá)式
	btn1.setOnClickListener(view -> {
        btn1.setText("btn1");
    });
    
	public void click(View v){
		btn2.setText("btn2");
	}

按鈕點(diǎn)擊事件較多的情況下,實(shí)現(xiàn)OnClickListener接口,重寫onClick方法:

public class MainActivity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        //TODO 初始化N個(gè)控件...
    }
    
    @Override
    public void onClick(View v){
        switch(v.getId()){
            case R.id.btn1:
                btn1.setText("btn1");
            case R.id.btn2:
                btn1.setText("btn2");
            //......
        }
    }
}

4.RadioButton

Radiobutton 需要與 RadioGroup 配合使用

//RadioGroup控件的屬性 控制子控件的排列方向
orientation="vertical"    //垂直
orientation="horizontal"    //水平

//RadioButtion控件的屬性 設(shè)置按鈕默認(rèn)為選中狀態(tài)
checked="ture"

監(jiān)聽事件(setOnCheckedChangeListener)

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                if(i == R.id.rbtn){
                    //TODO
                }else{
                    //TODO
            }
        });

5.ImageView

//background是背景,會根據(jù)控件大小進(jìn)行伸縮	
<ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bg"/>
//src是前景,以原圖大小顯示
<ImageButton
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/ic_launcher_background"
        android:src="@drawable/ic_launcher_foreground"/>

6.ProgressBar

ProgressBar的屬性

Key Info
indeterminate 不確定模式,動畫無限循環(huán)
indeterminateDrawable 設(shè)置不確定模式是否可drawable
max 進(jìn)度的最大值
maxHeight 進(jìn)度Widget最大高
maxWidth 進(jìn)度Widget最大寬
minHeight 進(jìn)度Widget最小高
minWidth 進(jìn)度Widget最小寬
progress 進(jìn)度默認(rèn)值,0~max
progressBackgroundTint 背景顏色
secondaryProgress 定義二級進(jìn)度值,0~max

ProgressBar的方法

Function Info
getMax() 返回最大值
getProgress() 返回進(jìn)度
getSecondaryProgressBy() 返回次要進(jìn)度
incrementProgressBy() 指定增長的進(jìn)度,正數(shù)增加,負(fù)數(shù)減少
isIndeterminate() 是否為不確定模式
setLndeterminate() 設(shè)置為不確定模式

系統(tǒng)提供的樣式

style=“@andorid:style/*” Info
Widget.progressBar.Horizontal 水平進(jìn)度條
Widget.progressBar.Inverse 普通環(huán)形(默認(rèn))
Widget.progressBar.Large 大環(huán)形
Widget.progressBar.Small 小環(huán)形

自定義進(jìn)度條比較復(fù)雜,不展開

另外,對話框形式的進(jìn)度條ProgressDialog已被棄用,不建議使用。

常見對話框

1.AlertDialog

AlertDialog.Builder dialog = new AlertDialog.Builder(this)
                        .setTitle("密碼錯(cuò)誤")
                        .setIcon(R.drawable.ic_launcher_background)
                        .setPositiveButton("確定",null)
                        .setNegativeButton("取消",null)
                        .setMessage("123");
dialog.show();

2.單選(AlertDialog)

new AlertDialog.Builder(this)
    .setTitle("選擇性別")
    .setSingleChoiceItems(new String[]{"男", "女"}, 0,
                      new DialogInterface.OnClickListener() {
                          @Override
                          public void onClick(DialogInterface dialogInterface, int i) {
                                }
                            })
    .setPositiveButton("確定",null)
    .show();

setSingleChoiceItems()方法需要設(shè)置三個(gè)參數(shù):

  1. 建立數(shù)組,用于顯示選項(xiàng)內(nèi)容
  2. 參數(shù)是否默認(rèn)選中:0表示選中第一個(gè),-1表示默認(rèn)不選中
  3. 設(shè)立監(jiān)聽,允許對話框被點(diǎn)擊

3.多選(AlertDialog)

//lambda表達(dá)式
new AlertDialog.Builder(this)
    	.setTitle("選擇性別")
        .setMultiChoiceItems(new String[]{"a", "b", "c", "d", "e", "f"},
                     new boolean[]{true, true, false, false, true, true}, 
                     ((dialogInterface, i, b) -> {
                     
                     }))
        .setPositiveButton("確定",null)
        .show();

setMultiChoiceItems()方法需要設(shè)置三個(gè)參數(shù):

  1. String[] 建立數(shù)組,用于顯示選項(xiàng)內(nèi)容
  2. boolean[] 建立數(shù)組,參數(shù)是否默認(rèn)選中
  3. 設(shè)立監(jiān)聽,允許對話框被點(diǎn)擊(相比單選多了一個(gè)boolean參數(shù))

4.消息對話框(Toast)

//輕量級信息提醒機(jī)制
//別忘了在最后的show方法
Toast.makeText(this,"hello",Toast.LENGTH_SHORT).show();
Toast.makeText(this,"hello",Toast.LENGTH_LONG).show();

5.自定義對話框

新建一個(gè)my_dialog.xml文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#fff"
        android:orientation="vertical">
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="#08F"
            android:gravity="center"
            android:text="自定義對話框"
            android:textColor="#fff"
            android:textSize="18sp"
            android:visibility="visible"/>
        <LinearLayout
            android:id="@+id/ll_content"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center">
            <TextView
                android:id="@+id/tv_msg"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:minHeight="100dp"
                android:paddingTop="15dp"
                android:paddingRight="20dp"
                android:paddingBottom="15dp"
                android:paddingLeft="20dp"
                android:textColor="#4e5052"
                android:textSize="16sp"/>

        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_gravity="bottom"
            android:background="#EEE"
            android:gravity="center"
            android:orientation="horizontal">
            <Button
                android:id="@+id/btn_ok"
                android:layout_width="114dp"
                android:layout_height="40dp"
                android:layout_marginLeft="20dp"
                android:background="#6200ee"
                android:gravity="center"
                android:text="確定"
                android:textColor="#FFF"
                android:textSize="15sp"/>
            <Button
                android:id="@+id/btn_cancel"
                android:layout_width="114dp"
                android:layout_height="40dp"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:background="#d0d0d0"
                android:gravity="center"
                android:text="取消"
                android:textColor="#666"
                android:textSize="15sp"/>

        </LinearLayout>
    </LinearLayout>
</FrameLayout>

PS:按鈕的顏色改不了,就在values/themes.xml中修改

<style name="Theme.Textbook_test01" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">

新建MyDialog.java文件,繼承Dialog類

public class MyDialog extends Dialog {
    private String dialogMessage;
    private TextView tvMsg;
    private Button btnOK;
    private Button btnCancel;
    //構(gòu)造方法
    public MyDialog(Context context,String dialogMessage){
        super(context);
        this.dialogMessage = dialogMessage;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去除標(biāo)題
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //引入自定義對話框布局
        setContentView(R.layout.my_dialog);
        
        tvMsg=findViewById(R.id.tv_msg);
        btnOK=findViewById(R.id.btn_ok);
        btnCancel=findViewById(R.id.btn_cancel);
        //設(shè)置自定義對話框顯示內(nèi)容
        tvMsg.setText(dialogMessage);
        
        btnOK.setOnClickListener(view -> {
            //TODO 確認(rèn)后的操作
        });
        btnCancel.setOnClickListener(view -> {
            dismiss();//關(guān)閉當(dāng)前對話框
        });
    }
}

在MainActivity.java中創(chuàng)建對象

new MyDialog(this,"我是自定義的Dialog").show();

樣式和主題

當(dāng)style和theme的屬性發(fā)生沖突時(shí),style的優(yōu)先級要高于theme

1.樣式(styles.xml)

安卓中的樣式類似與網(wǎng)頁中CSS樣式,可以讓設(shè)計(jì)與內(nèi)容分離。

在res/values下新建styles.xml。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="textStyle_one">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#999</item>
        <item name="android:textSize">35sp</item>
    </style>
    <style name="textStyle_two" parent="@style/textStyle_one">
        <item name="android:textSize">25sp</item>
    </style>
</resources>

其中name屬性是樣式名稱,parent屬性表示繼承某個(gè)樣式

通過標(biāo)簽定義樣式。

在布局文件中引用樣式:

   <TextView
        android:id="@+id/tv1"
        style="@style/textStyle_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test樣式1"
        tools:ignore="MissingConstraints" />
    <TextView
        style="@style/textStyle_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test樣式2"
        app:layout_constraintTop_toBottomOf="@+id/tv1"
        tools:ignore="MissingConstraints" />

2.主題(themes.xml)

主題是應(yīng)用到整個(gè)Activity和Application的樣式,要在AndroidManifest.xml文件中引用。

	<!-- themes.xml 自定義的主題 -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/purple_500</item>
        <item name="colorPrimaryDark">@color/purple_200</item>
        <item name="colorAccent">@color/purple_700</item>
    </style>
    <style name="grayTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:background">#999</item>
    </style>

AndroidManifest.xml中應(yīng)用主題

	<!-- AndroidManifest.xml -->
	<activity
            android:name=".SelectTraActivity"
            android:theme="@style/grayTheme"
            android:exported="false" />

注意,在定義主題時(shí),需用到parent屬性去繼承"Theme.AppCompat.Light.DarkActionBar"來保證兼容性。

注意,在java代碼中也可以引用主題,需在onCreate()方法內(nèi)添加.setTheme(R.style.grayTheme)方法,該方法通常放在setContentView()方法之后。

國際化(I18N)

讓不同國家的人看到不同的效果,就需要用到這個(gè)功能。

右鍵 res文件夾 —> New —> Values resource file —>

文件名 string.xml ,Directory name和type 為values —>

選Locale —> 選國家—>選語言—>確定

在對應(yīng)的文件下修改對應(yīng)的資源,就能實(shí)現(xiàn)不同語言下看到不同的效果

程序調(diào)試

androidTest是整合測試??梢源虬鼮閍pk運(yùn)行在設(shè)備上,可以實(shí)時(shí)查看細(xì)節(jié)。

test是單元測試類。運(yùn)行在本地開發(fā)機(jī)上,速度快。

單元測試(test 模塊)

要測試的方法直接寫在test模塊的類里,要加上@Test

public class ExampleUnitTest {
    @Test
    public void addition_isCorrect() {
        assertEquals(4, 2 + 2);
    }
    @Test
    public void test() throws Exception{
        final int expected =2;
        final int reality =2;
        //斷言,expected期望的參數(shù)值與reality相同
        assertEquals(expected,reality);
    }
}

LogCat

Logcat在編輯器的最下面一欄的中間。可以通過限定精確查找。

靜態(tài)方法 級別 Translate
Log.v() Vebose 詳細(xì)信息(低)
Log.d() Debug 調(diào)試信息
Log.i() Info 一般信息
Log.w() Warning 警告信息
Log.e() Error 錯(cuò)誤信息
Assert 斷言(高)

Debug

打斷點(diǎn):單擊代碼右側(cè)

功能 快捷鍵
Step Over 執(zhí)行下一句 F8
Step Info 當(dāng)見到方法,進(jìn)入此方法 F7
Force Step Info 用于研究源碼
Step Out 跳出改方法
Resume Program 執(zhí)行下一個(gè)斷點(diǎn) F9
Stop app 停止調(diào)試
View Breakpoints 查看所有斷點(diǎn)

二、Activity

生命周期

方法 狀態(tài) Info
onCreate() 頁面創(chuàng)建時(shí)
onStart() 啟動狀態(tài) 頁面可見時(shí)
onResume() 運(yùn)行狀態(tài) 可獲取焦點(diǎn),與用戶交互時(shí)
onPause() 暫停狀態(tài) 被其他頁面覆蓋或鎖屏?xí)r
onStop() 停止?fàn)顟B(tài) 頁面不可見時(shí)
onDestroy() 銷毀狀態(tài) 頁面銷毀時(shí)
onRestart() 從停止?fàn)顟B(tài)重新啟動時(shí)

四種啟動模式

Mainifest.xml中通過activity標(biāo)簽的launchMode屬性可以設(shè)置啟動模式。

  1. standard模式:【不會檢測Activity是否重復(fù)】
  2. singleTop模式:【相同Activity且同時(shí)位于堆棧頂端(top)時(shí)才會重復(fù)處理】
  3. singleTask模式:【一個(gè)堆棧僅可以有可以實(shí)例的task,頂出其他Activity
  4. singlesrance模式:【一個(gè)系統(tǒng)僅僅一個(gè)這樣的Activity

頁面跳轉(zhuǎn)

  1. 顯式跳轉(zhuǎn)

    Intent intent =new Intent();
    intent.setClass(this,目標(biāo)頁面.class);
    startActivity(intent);
    
    //簡化
    startActivity(new Intent(this,目標(biāo)頁面.class));
    
    
  2. 隱式跳轉(zhuǎn)

    通過指定的action和category尋找目標(biāo)Activity,使用隱式intent還可以啟動其他app中的Activity。

    Intent intent = new Intent();
    intent.setAction("action");
    startActivity(intent);
    
    //簡化
    startActivity(new Intent("action"));
    
    
案例(打開瀏覽器)
//MainActivity.xml
	//在按鈕的點(diǎn)擊事件中

	Intent intent = new Intent();
	//這是安卓系統(tǒng)內(nèi)置的Action,通過這個(gè)Action可以和瀏覽器進(jìn)行匹配
	intent.setAction("android.intent.action.VIEW");
	//設(shè)置要打開的網(wǎng)址
	//Uri.parse()方法把 網(wǎng)址字符串 解析成 Uri對象 ,傳入setData()方法。
	intent.setData(Uri.parse("http://www.baidu.com"));
	startActivity(intent);

數(shù)據(jù)傳遞

//頁面1.xml
Intent intent = new Intent();
intent.setClass(LoginActivity.this,SelectTraActivity.class);
intent.putExtra("n1","我是要傳遞的數(shù)據(jù)");
intent.putExtra("n2",123);
startActivity(intent);

//頁面2.xml
String n1 = getIntent().getStringExtra("n1");
String n2 = getIntent().getIntExtra("n2");

數(shù)據(jù)回傳

目前 startActivityForResult() 已被棄用,替代方案為 Activity Result API 組件,這里不展開。

startActivityForResult(Intent intent,int requestCode);

該方法也用于啟動Activity,并且能在頁面銷毀時(shí)返回?cái)?shù)據(jù)。

實(shí)際應(yīng)用:微信發(fā)朋友圈時(shí),進(jìn)入圖庫選好照片后,會返回到發(fā)表狀態(tài)頁面并帶回所選的圖片信息。文章來源地址http://www.zghlxwxcb.cn/news/detail-401091.html

//頁面1.xml
Intent intent = new Intent(this,Activity02.class);
startActivityForResult(intent,1);

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 1){
            if (resultCode ==1){
                String str = data.getStringExtra("name");
            }
        }
    }
//頁面2.xml
Intent intent = new Intent();
intent.putExtra("name","abcdefg");
setResult(1,intent);

到了這里,關(guān)于Android Studio開發(fā)基礎(chǔ)知識(持續(xù)更新中~)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【云原生持續(xù)交付和自動化測試】5.3 持續(xù)交付和DevOps實(shí)踐基礎(chǔ)知識

    往期回顧: 第一章:【云原生概念和技術(shù)】 第二章:【容器化應(yīng)用程序設(shè)計(jì)和開發(fā)】 第三章:【基于容器的部署、管理和擴(kuò)展】 第四章:【微服務(wù)架構(gòu)設(shè)計(jì)和實(shí)現(xiàn)】 第五章:【5.1 自動化構(gòu)建和打包容器鏡像】 第五章:【5.2 自動化測試和集成測試】 云原生下對持續(xù)交付(

    2024年02月09日
    瀏覽(57)
  • Unity中的熱更新的基礎(chǔ)知識,Xlua與ILRuntime基礎(chǔ)知識

    Unity中的熱更新的基礎(chǔ)知識,Xlua與ILRuntime基礎(chǔ)知識

    熱更新是指在不需要重新編譯打包游戲的情況下,在線更新游戲中的一些非核心代碼和資源,比如活動運(yùn)營和打補(bǔ)丁。熱更新分為資源熱更新和代碼熱更新兩種,代碼熱更新實(shí)際上也是把代碼當(dāng)成資源的一種熱更新,但通常所說的熱更新一般是指代碼熱更新。資源熱更新主要

    2023年04月09日
    瀏覽(25)
  • 【GAN】基礎(chǔ)知識(還在更新)

    【GAN】基礎(chǔ)知識(還在更新)

    還沒寫完,別罵了.....遇到啥新東西也會補(bǔ)充進(jìn)來 用來衡量分布之間距離 1.1.1 推導(dǎo)過程 如果想要對KL散度有一個(gè)比較好的理解,我其實(shí)建議看一下,從信息熵的角度入手我認(rèn)為是一個(gè)比較好的切入點(diǎn)?相對熵(KL散度)、JS散度和Wasserstein距離 ?和都是概率分布,一般代表真實(shí)

    2024年02月16日
    瀏覽(41)
  • 【環(huán)境配置】Android-Studio-OpenCV-JNI以及常見錯(cuò)誤 ( 持續(xù)更新 )

    【環(huán)境配置】Android-Studio-OpenCV-JNI以及常見錯(cuò)誤 ( 持續(xù)更新 )

    最近一個(gè)項(xiàng)目要編譯深度學(xué)習(xí)的庫,需要用到 opencv 和 JNI,本文檔用于記錄環(huán)境配置中遇到的常見錯(cuò)誤以及解決方案 解決辦法: 刪除文件 .idea/gradle.xml 和 .idea/workspace.xml , 重新編譯; 解決辦法:Invalid Gradle JDK configuration found 原因是NDK版本過高,跟當(dāng)前的AndroidStudio版本不匹配

    2024年02月11日
    瀏覽(19)
  • MAUI學(xué)習(xí)之始--基礎(chǔ)知識(隨時(shí)更新)

    我理解的lambda表達(dá)式就是把函數(shù)名省略了一下 比如 1. 文本修飾:TexDecrations = \\\"\\\" // 可以加下劃線或者刪除線(就是字上劃一橫) 2. 轉(zhuǎn)換字體:CharacterSpacing = \\\"\\\" //字符間距,可以小數(shù),正數(shù)負(fù)數(shù) 3. 文本轉(zhuǎn)換:TextTransform=\\\"\\\" // 所有字符轉(zhuǎn)換大寫或小寫 4. 換行: 在Text=”“中,#

    2024年02月11日
    瀏覽(19)
  • Android Framework基礎(chǔ)知識

    Android Framework基礎(chǔ)知識

    哈嘍大家好,我是Zzz. 給大家分享一篇Framework入門的基礎(chǔ)知識文章,內(nèi)容純純原創(chuàng)。 一、Application,Activity和進(jìn)程的關(guān)系? ? ? Application、Activity只是進(jìn)程虛擬機(jī)運(yùn)行的一個(gè)類對象,只是屬于系統(tǒng)的一個(gè)組件和進(jìn)程沒有直接聯(lián)系。Android支持為每個(gè)組件可以單獨(dú)進(jìn)程方式運(yùn)行。

    2024年03月24日
    瀏覽(25)
  • XML的基礎(chǔ)知識及XMl文件的創(chuàng)建/讀取/更新demo詳解

    1.什么是xml? Xml(Extensible Markup Language),可擴(kuò)展標(biāo)記語言,一種用于存儲數(shù)據(jù)或傳輸數(shù)據(jù)的標(biāo)記語言,由萬維網(wǎng)(W3C開發(fā))。它允許開發(fā)人員創(chuàng)建自己的標(biāo)記,且簡單易讀,易擴(kuò)展,支持標(biāo)準(zhǔn)的字符編碼,如UFT-8,UTF-16. 2. Xml文檔的基本結(jié)構(gòu) 2.1文檔聲明 ,包括文檔版本(ver

    2024年04月09日
    瀏覽(24)
  • Js水幾個(gè)基礎(chǔ)知識點(diǎn):數(shù)組的操作,字符串和數(shù)組之間的互轉(zhuǎn),持續(xù)補(bǔ)充,歡迎關(guān)注

    一、插入 / 刪除元素: 我們就不從創(chuàng)建開始講了,那個(gè)太基礎(chǔ)了,js創(chuàng)建數(shù)組一般都直接let arr = […,…,…],有部分仁兄喜歡new Array(…, …, …),這樣看起來可能高級點(diǎn),結(jié)果是一樣的哈。 這里我們直接來討論插入元素: 1、在末尾插入 / 刪除元素(push / pop,操作原數(shù)組)

    2024年02月09日
    瀏覽(49)
  • [Android]JNI的基礎(chǔ)知識

    [Android]JNI的基礎(chǔ)知識

    目錄 1.什么是JNI?? 2.配置JNI開發(fā)環(huán)境NDK 3.創(chuàng)建Native?C++類型的項(xiàng)目 4. 了解CMakeLists.txt 文件 5.了解native-lib.cpp 文件 6.在 Android 的 MainActivity 中調(diào)用 native-lib.cpp 中實(shí)現(xiàn)的本地方法 1.什么是JNI?? ? ? ? JNI(Java Native Interface)是一種允許Java代碼與本地代碼(如C或C++)進(jìn)行交互的技

    2024年02月11日
    瀏覽(20)
  • Android ContentProvider基礎(chǔ)知識學(xué)習(xí)筆記

    1、動態(tài)申請權(quán)限 2、讀取手機(jī)聯(lián)系人 3、創(chuàng)建自己的ContentProvider (1) onCreate()。初始化ContentProvider的時(shí)候調(diào)用。通常會在這里完成對數(shù)據(jù)庫的創(chuàng)建和升級等操作,返回true表示ContentProvider初始化成功,返回false則表示失敗。 (2) query()。從ContentProvider中查詢數(shù)據(jù)。uri參數(shù)用于確定查

    2024年04月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包