Android Studio第三方github库导入法(一)——CV大法

Android Studio第三方github库导入法(一)——CV大法

一、Waveform

以导入Waveform项目的wavelib库为例

Waveform项目主要是基于Android Studio环境java语言实现动态滚动波形图(心电图)

由于电赛需要进行实时绘点展现动态波形,因此采用了GiftedCat大佬的Waveform项目里的库


大佬的测试效果图:

在这里插入图片描述

GiftedCat大佬的完整博客地址:https://juejin.cn/post/6912791803779350536

github项目地址:https://github.com/Giftedcat/Waveform

二、导入方法

我这里采用的是另一种粗暴的导入法,因为大佬博客上的方法那会我还不太会用(哭笑)

1.github项目下载

先到github上的https://github.com/Giftedcat/Waveform项目界面

在这里插入图片描述

把项目下载到本地

在这里插入图片描述

2.创建一个新的项目

在这里插入图片描述

在这里插入图片描述

3.拷贝wavelib库

Waveform项目下载好后,用Android Studio打开,选择Project将里面的wavelib库进行复制

在这里插入图片描述

在我们新建的项目waveTest同样选择Project

在这里插入图片描述

在Project中右键waveTest,选择Paste(粘贴)

在这里插入图片描述

点击OK

在这里插入图片描述

粘贴好后会像下面一样,这时候呢,感觉wavelib就是个普通目录(我们希望它是一个library的形式)

在这里插入图片描述

点击setting.gradle,在setting.gradle中include 后面添加,':wavelib' , 最后点击Sync now进行同步

在这里插入图片描述

当同步好后,这时候就会发现wavelib变为library的形式啦

在这里插入图片描述

4.修改wavelib库的build.gradle文件

先把Project界面切换到Android界面

在这里插入图片描述

wavelib的build.gradle参照app的build.gradle进行对应部分的修改

在这里插入图片描述

我app的build.gradle

plugins {
    id 'com.android.application'
}

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.example.wavetest"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

修改前,我wavelib的build.gradle

apply plugin: 'com.android.library'
apply plugin: 'maven-publish'

group = 'com.github.Giftedcat'
version = '1.3.2'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.3"


    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 30
        versionCode 6
        versionName "1.3.2"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }


}

task comps {
    afterEvaluate {
        println("Components: " + components*.name)
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                from components.release
                groupId = 'com.github.Giftedcat'
                artifactId = 'Waveform'
                version = '1.3.2'
            }
        }
    }
}

修改后,我wavelib的build.gradle

apply plugin: 'com.android.library'
apply plugin: 'maven-publish'

group = 'com.github.Giftedcat'
version = '1.3.2'

android {
    compileSdkVersion 32
    buildToolsVersion "30.0.3"


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }


}

task comps {
    afterEvaluate {
        println("Components: " + components*.name)
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.3.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test:runner:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

afterEvaluate {
    publishing {
        publications {
            // Creates a Maven publication called "release".
            release(MavenPublication) {
                from components.release
                groupId = 'com.github.Giftedcat'
                artifactId = 'Waveform'
                version = '1.3.2'
            }
        }
    }
}

修改好后,同步即可

在这里插入图片描述

5.引用wavelib库

同步好后,在MainActivity中试着写入import com.giftedcat.wavelib.view.WaveView;

import com.giftedcat.wavelib.view.WaveView;

在这里插入图片描述

此时发现报红,将鼠标光标箭头移动到WaveView处,然后点击Add…

在这里插入图片描述

Add后,错误消失,目前其实已成功导入

在这里插入图片描述

三、测试wavelib库

1.了解使用方法

参考GiftedCat大佬的项目使用介绍:使用手册

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.上手实践(单数据添加)

在activity_main.xml中,我使用了一个绘图控件布局和一个按钮(按钮作为触发数据发送)

在这里插入图片描述

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:orientation="vertical">
        <com.giftedcat.wavelib.view.WaveView
            android:id="@+id/wave_view2"
            android:layout_width="match_parent"
            android:layout_height="500dp"
            app:draw_mode="normal"
            app:wave_line_stroke_width="5"
            app:wave_background="#FFFFFF"
            tools:ignore="MissingConstraints" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="改变"
                android:id="@+id/bnt">
            </Button>
        </LinearLayout>

    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package com.example.wavetest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.giftedcat.wavelib.view.WaveView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
    private WaveView waveShowView;
    private Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        waveShowView = findViewById(R.id.wave_view2);

        //点击按钮
        btn1 = findViewById(R.id.bnt);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float data = new Random().nextFloat()*(20f)-10f;
                waveShowView.showLine(data);
                Toast.makeText(MainActivity.this,""+data,Toast.LENGTH_SHORT).show();
            }
        });

    }
}

效果展示:(当每次按下按钮时,会取到一个-10到10间的浮点数,绘图控件将其描绘在图上)

在这里插入图片描述

3.小扩展(多数据添加)

MainActivity.java(一次添加5个)

package com.example.wavetest;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.giftedcat.wavelib.view.WaveView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
    private WaveView waveShowView;
    private Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        waveShowView = findViewById(R.id.wave_view2);

        //点击按钮
        btn1 = findViewById(R.id.bnt);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int length = 5; //数据个数
                float[] datas = new float[length];
                for (int i = 0; i < datas.length; i++){
                    datas[i] = new Random().nextFloat()*(20f)-10f;
                }
                waveShowView.showLines(datas);
//                Toast.makeText(MainActivity.this,""+data,Toast.LENGTH_SHORT).show();
            }
        });

    }
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

索子也敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值