Android Studio 导入github第三方库

在github上看到好多炫酷的组件,捣腾了半天终于知道要怎么用了5555,记录一下,免得以后忘记了

先以这个简单的Toast样式为例 Toasty 下载 ,然后代码下载到本地。

在github上教的方法都是类似这样:
在root build.gradle file中添加

allprojects {
	repositories {
		...
		maven { url "https://jitpack.io" }
	}
}

在module’s build.gradle file中添加

dependencies {
	...
	implementation 'com.github.GrenderG:Toasty:1.5.2'
}

but 尝试了几遍没有成功,然后又杂七杂八的尝试去maven仓库下载arr文件然后导入(这个方法也可以,但是有一些github上的项目并没有上传到marven,感觉并不是万能的),也尝试了导入modules, 也不行。。。

于是!尝试简单粗暴的用CV大法+一些小tricks,居然成了!!

anyway ,下面就进入正题
1️⃣
在本地新建一个空project。
Android Studio 导入github第三方库_第1张图片

2️⃣
将第三方代码下载到本地,然后打开瞅瞅,有两个大文件夹(里面装的都是核心代码,看着就很重要啦哈哈哈) app先不管,我们先复制toasty这个目录
Android Studio 导入github第三方库_第2张图片
3️⃣
然后把toasty复制到项目的根目录下。
Android Studio 导入github第三方库_第3张图片
这时候呢,toasty是普通目录的感觉(我们希望它是一个library的形式),而且猩红的报错一大片,莫慌,进入下一步。

4️⃣
在setting.gradle中,include 后面添加,':toasty' , 最后点击Sync now进行同步。
Android Studio 导入github第三方库_第4张图片
这时候就会发现toasty变为library的形式啦
Android Studio 导入github第三方库_第5张图片
然后运行项目,这时呢一定会报错,报错的原因就是gradle项目的配置问题。改的小技巧就是把toasty目录下的build.gradle文件报错的地方改成与app目录下build.gradle文件一致。(主要就是版本号不一致,或者有些报错的地方直接删除对应的那一行)
比如说我的就改成这样了:

apply plugin: 'com.android.library'

group = 'com.github.GrenderG'
version = 1

android {
    compileSdkVersion 32

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

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

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

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

5️⃣
上面的那一步跑通后,然后就可以丰富新项目的app内容啦
Android Studio 导入github第三方库_第6张图片
框出来的文件可以参考github上app目录下的对应文件编写
例如我的MainActivity.java 文件

package com.example.myapplication1;

import static android.graphics.Typeface.BOLD_ITALIC;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.StyleSpan;
import android.view.View;

import es.dmoral.toasty.Toasty;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button_error_toast).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.error(MainActivity.this, R.string.error_message, Toasty.LENGTH_SHORT, true).show();
            }
        });
        findViewById(R.id.button_success_toast).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.success(MainActivity.this, R.string.success_message, Toasty.LENGTH_SHORT, true).show();
            }
        });
        findViewById(R.id.button_info_toast).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.info(MainActivity.this, R.string.info_message, Toasty.LENGTH_SHORT, true).show();
            }
        });
        findViewById(R.id.button_warning_toast).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.warning(MainActivity.this, R.string.warning_message, Toasty.LENGTH_SHORT, true).show();
            }
        });
        findViewById(R.id.button_normal_toast_wo_icon).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.normal(MainActivity.this, R.string.normal_message_without_icon).show();
            }
        });
        findViewById(R.id.button_normal_toast_w_icon).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Drawable icon = getResources().getDrawable(R.drawable.ic_launcher_background);
                Toasty.normal(MainActivity.this, R.string.normal_message_with_icon, icon).show();
            }
        });
        findViewById(R.id.button_info_toast_with_formatting).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.info(MainActivity.this, getFormattedMessage()).show();
            }
        });
        findViewById(R.id.button_custom_config).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toasty.Config.getInstance()
                        .setToastTypeface(Typeface.createFromAsset(getAssets(), "PCap Terminal.otf"))
                        .allowQueue(false)
                        .apply();
                Toasty.custom(MainActivity.this, R.string.custom_message, getResources().getDrawable(R.drawable.ic_launcher_background),
                        android.R.color.black, android.R.color.holo_green_light, Toasty.LENGTH_SHORT, true, true).show();
                Toasty.Config.reset(); // Use this if you want to use the configuration above only once
            }
        });
    }
    private CharSequence getFormattedMessage() {
        final String prefix = "Formatted ";
        final String highlight = "bold italic";
        final String suffix = " text";
        SpannableStringBuilder ssb = new SpannableStringBuilder(prefix).append(highlight).append(suffix);
        int prefixLen = prefix.length();
        ssb.setSpan(new StyleSpan(BOLD_ITALIC),
                prefixLen, prefixLen + highlight.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return ssb;
    }
}

activity_main.xml文件如下:


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

        <Button
            android:text="@string/error_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_error_toast"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:text="@string/success_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_error_toast"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_success_toast"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:text="@string/info_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_success_toast"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_info_toast"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:text="@string/info_toast_with_formatting"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/button_info_toast"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_info_toast_with_formatting"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:id="@+id/button_warning_toast"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_info_toast_with_formatting"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:text="@string/warning_toast" />

        <Button
            android:text="@string/normal_toast_without_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_warning_toast"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_normal_toast_wo_icon"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:text="@string/normal_toast_with_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_normal_toast_wo_icon"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_normal_toast_w_icon"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <Button
            android:text="@string/custom_configuration"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/button_normal_toast_w_icon"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:id="@+id/button_custom_config"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

    RelativeLayout>
ScrollView>

这个过程还算流畅,然后运行代码。(可能会有一些小bug, 一般是类没有引入,alt+enter快捷引入即可)

哇塞!可以跑出效果啦嘿嘿~
Android Studio 导入github第三方库_第7张图片
上面是个简单的例子,但是感觉打开了新世界的大门,还有好多的酷炫组件想去尝试!

你可能感兴趣的:(#,安卓开发,android,studio)