JitPack –发布您的Android库
在本教程中,我们将演示如何创建自己的开源应用程序并将其用作依赖项。
您一定遇到过许多开源库。
当然,您将在项目中使用一些。
我们将创建一个用于垂直滚动ViewPagers的库。
库名称将适当地为ViewPagerVertical。
JitPack
JitPack是JVM和Android项目的软件包存储库。
它包含库的aar和依赖罐。
与库一起创建示例应用程序是一个好习惯。
创建我们的Android库
让我们开始一个新的Android Studio项目,以创建我们的Android库。
选择选项卡式活动模板,因为它为我们的活动中的ViewPager提供了默认代码。
转到文件|新模块| Android库。
在以下屏幕中输入模块的名称。
让我们看看我们的新模块在项目结构中的外观。
Android库项目结构
让我们在" viewpagervertical"模块中创建一个新的Java类。
下面是VerticalViewPager.java类的代码。
package com.theitroad.viewpagervertical;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class VerticalViewPager extends ViewPager {
public VerticalViewPager(Context context) {
super(context);
init();
}
public VerticalViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
setPageTransformer(true, new VerticalPageTransformerAnimate());
setOverScrollMode(OVER_SCROLL_NEVER);
}
/**
* Swaps the X and Y coordinates of your touch event.
*/
private MotionEvent swapXY(MotionEvent ev) {
float width = getWidth();
float height = getHeight();
float newX = (ev.getY()/height) * width;
float newY = (ev.getX()/width) * height;
ev.setLocation(newX, newY);
return ev;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean intercepted = super.onInterceptTouchEvent(swapXY(ev));
swapXY(ev); //return touch coordinates to original reference frame for any child views
return intercepted;
}
private class VerticalPageTransformerAnimate implements PageTransformer {
private static final float MIN_SCALE = 0.75f;
@Override
public void transformPage(View view, float position) {
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
float alpha = 0;
if (0 <= position && position <= 1) {
alpha = 1 - position;
} else if (-1 < position && position < 0) {
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float verticalMargin = pageHeight * (1 - scaleFactor)/2;
float horizontalMargin = pageWidth * (1 - scaleFactor)/2;
if (position < 0) {
view.setTranslationX(horizontalMargin - verticalMargin/2);
} else {
view.setTranslationX(-horizontalMargin + verticalMargin/2);
}
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
alpha = position + 1;
}
view.setAlpha(alpha);
view.setTranslationX(view.getWidth() * -position);
float yPosition = position * view.getHeight();
view.setTranslationY(yPosition);
}
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return super.onTouchEvent(swapXY(ev));
}
}
注意:我们已经在"嵌套ViewPagers教程"中介绍了VerticalViewPager。
在我们的应用程序模块中添加模块依赖项要在我们的应用程序模块中添加库模块,请转至文件|项目结构单击依赖选项卡|添加新的模块依赖性。
以下依存关系应添加到app模块的build.gradle中。
implementation project(':viewpagervertical')
现在在应用模块的MainActivity.java类和activity_main.xml中,将ViewPager实例替换为VerticalViewPager。
就是这样,我们的应用程序已准备就绪。
在创建库之前,请检查一次输出。
发布Android库
为了准备好库 的产品,我们需要在Gradle中进行以下更改。
将以下依赖项添加到项目级别根build.gradle文件。
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
在库模块" build.gradle"文件中,在" apply plugin"顶行之后添加以下两行:" com.android.library"。
apply plugin: 'com.github.dcendents.android-maven' group='com.github.anupamchugh'
在创建库时,在group字段中用github用户名替换最后一个字符串。
同步更改!
继续前进,并将您的项目推送到GitHub。
您可以转到VCS |导入版本控制|在GitHub上共享项目。
完成后,为您的仓库创建一个发布标签。
在Android Studio中提供的命令行控制台中输入以下行。
git tag -a 1.0 -m "v1.0" git push origin 1.0
每次在库中进行更改时,都需要更新上述各行中的版本号。
通常,版本号的格式为1.0.x,以解决一些小错误。
1.x.x表示严重的错误/新功能,2.x.x表示重大更改。
现在是最后阶段!
打开JitPack,登录并按URL搜索您的存储库。
在我们的情况下,它看起来像这样:
单击"获取"将显示依赖项URL。
请按照以下说明进行操作。
通常,您需要在build.gradle根目录中添加以下内容。
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
用以下依赖关系替换应用程序" build.gradle"中的实现" module_name"。
dependencies {
implementation 'com.github.anupamchugh:VerticalViewPager:1.0'
}
我们创建了第一个Android库。
您可以从下面的链接下载Android VerticalViewPager项目。
请按照上述说明,尝试修改VerticalViewPager并将其作为库发布。

