LinkPreview
A convenient library to show clickable previews of links.
Features
- Parse entire body of text to automatically find links.
- Find links from different sources and open them in the appropriate app, falling back to a custom tab if none is found.
How Do I Use It?
Setup
Gradle
This library is now distributed as part of mavenCentral()
On your module's build.gradle
file add this statement to the dependencies
section:
dependencies {
implementation 'com.nicknackdevelopment:linkpreview:4.0'
}
Also make sure that the repositories
section includes both jcenter and maven
section with the "google()"
endpoint.
repositories {
jcenter()
google()
}
Link Preview
Add to your layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
...
<com.nick.mowen.linkpreview.view.LinkPreview
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Create And Setup The View
val preview: LinkPreview = findViewById(R.id.preview)
...
preview.parseTextForLink(string) //Use LinkPreview$parseTextForLink if you have a body of text that contains more than just the link
preview.setLink(linkString) //Use when you have a string that contains only the link
Customize The View
preview.articleColor = ContextCompat.getColor(this, R.color.colorPrimary) //Set the color of the custom tab that is launched on link press
//Use the load listener if you want to take extra action when a link error or success occurs
preview.loadListener = object : LinkListener {
override fun onError() {
Toast.makeText(this@MainActivity, "Link loading failed", Toast.LENGTH_SHORT).show()
}
override fun onSuccess(link: String) {
}
}
Advanced Usage
You can override the LinkPreview clicklistener all together using the click listener
preview.clickListener = object : LinkClickListener {
override fun onLinkClicked(view: View?, url: String) {
}
}
Data Binding
LinkPreview supports data binding commands so the view can be customized in xml
<com.nick.mowen.linkpreview.view.LinkPreview
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:parsedLink="@{data.string}"/>
Appications using LinkPreview
Icon | Application |
---|---|
Texpert |
Please email me or send a pull request if you would like to be added here.
Also Seen On
Developed By
Nick Mowen - nick@nicknackdevelopment.com
Contributions
Any contributions are welcome!
Donations
If you would like to donate / contribute to future development, you can paypal me here
License
Copyright 2018 Nick Nack Developments
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.