可以看出,许多Android应用程序都需要使用在缩放时不会模糊的高质量图像。因此,我们必须使用高质量的图像。但是,如果我们使用的是PNG图像,则它们在缩放后会变得模糊,因为PNG图像由像素组成,并且在缩放后会降低其质量。因此,最好使用SVG图像,因为SVG图像由矢量组成,即使缩放后它们也不会降低质量。现在,我们将研究如何在我们的Android应用程序中从其URL加载SVG。
从URL加载SVG图像的步骤
步骤1:建立新的Android Studio专案
要创建一个新的Android Studio项目,只需单击“文件”>“新建”>“新项目” 。确保选择您的语言为Java 。您可以参考有关如何创建新的Android Studio项目的文章。
第2步:在转到编码部分之前,请在build.gradle中添加这两个依赖项
转到Gradle脚本> build.gradle(模块:应用程序)部分,添加以下依赖项,然后在上面的弹出窗口中单击“立即同步”。添加这两个依赖项。
- implementation ‘com.squareup.okhttp3:okhttp:3.10.0’
- implementation ‘com.pixplicity.sharp:library:1.1.0’
步骤3:现在,我们将进入设计部分
导航到应用程序> res>布局> activity_main.xml 。以下是activity_main.xml文件的代码。
Note: Drawables are added in app > res > drawable folder.
XML
Java
import android.content.Context;
import android.widget.ImageView;
import com.pixplicity.sharp.Sharp;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Utils {
private static OkHttpClient httpClient;
// this method is used to fetch svg and load it into target imageview.
public static void fetchSvg(Context context, String url, final ImageView target) {
if (httpClient == null) {
httpClient = new OkHttpClient.Builder()
.cache(new Cache(context.getCacheDir(), 5 * 1024 * 1014))
.build();
}
// here we are making HTTP call to fetch data from URL.
Request request = new Request.Builder().url(url).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// we are adding a default image if we gets any error.
target.setImageResource(R.drawable.gfgimage);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// sharp is a library which will load stream which we generated
// from url in our target imageview.
InputStream stream = response.body().byteStream();
Sharp.loadInputStream(stream).into(target);
stream.close();
}
});
}
}
Java
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize your imageview
imageView = findViewById(R.id.imageview);
// url for .svg image
String url = " ";
// this method will load svg
// image in your imageview
Utils.fetchSvg(this, url, imageView);
}
}
XML
步骤4:现在将新的Java类创建为Utils
在这个Java类中,我们以字节流的形式从URL加载数据。锐利的库将转换此字节流,并将SVG图像加载到我们的目标ImageView中。要创建新的Java类,请导航至应用程序> Java >应用程序包名称>>右键单击它,然后单击它,然后单击新建> Java类。给您的JAVA类Java。以下是实用程序的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.content.Context;
import android.widget.ImageView;
import com.pixplicity.sharp.Sharp;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class Utils {
private static OkHttpClient httpClient;
// this method is used to fetch svg and load it into target imageview.
public static void fetchSvg(Context context, String url, final ImageView target) {
if (httpClient == null) {
httpClient = new OkHttpClient.Builder()
.cache(new Cache(context.getCacheDir(), 5 * 1024 * 1014))
.build();
}
// here we are making HTTP call to fetch data from URL.
Request request = new Request.Builder().url(url).build();
httpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// we are adding a default image if we gets any error.
target.setImageResource(R.drawable.gfgimage);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// sharp is a library which will load stream which we generated
// from url in our target imageview.
InputStream stream = response.body().byteStream();
Sharp.loadInputStream(stream).into(target);
stream.close();
}
});
}
}
步骤5:现在,我们将在MainActivity中使用此Utils类。 Java文件以从URL加载图像
导航到应用程序> Java >您的应用程序包名称> MainActivity。 Java文件。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initialize your imageview
imageView = findViewById(R.id.imageview);
// url for .svg image
String url = " ";
// this method will load svg
// image in your imageview
Utils.fetchSvg(this, url, imageView);
}
}
步骤6:在您的AndroidManifest文件中添加互联网权限
导航到应用程序>清单并添加Internet权限。
XML格式