`
wangleyiang
  • 浏览: 221697 次
社区版块
存档分类
最新评论

含有用户界面的JAR制作及其在Android项目中的使用

阅读更多

        在实际的Java开发中,常常遇到要给第三方提供某个操作,但是又不希望第三方了解该操作的具体细节的问题。在众多的处理方法中,JAR(Java Archive,Java 归档文件)是一个不错的选择。

 

        本文从含有用户界面的JAR制作过程中可能遇到的一些问题和在Android项目中使用JAR的角度做浅显的说明。以下会经常看到两个项目,XJar和XJarTest,前者用于制作JAR和操作验证,后者用于使用和测试JAR的实际效果。


在Eclipse中的项目效果如图:

在两个项目的对应文件夹下的文件名称不能冲突,否则会出现如图所示的错误:

下面演示该错误出现的流程:

1、从XJar项目导出JAR,并确保选择了下图所示路径下的文件;

2、把导出的JAR添加到XJarTest项目(不要忘记Java Build Path哦),此时看到XJarTest项目中对应文件夹下有重名文件;

3、运行,你会看到错误提示!从表面上看,之所以会出现错误提示,是在编译的时候,从XJar项目导出的JAR会和XJarTest中的对应路径下的文件合并,如果重名,编译器无法处理。

 

如何解决在JAR提供的用户界面中使用特定的图片呢?对于这个问题,可以从网络上获得特定的图片,也可以把图片打包到JAR中等。下面对于把图片打包到JAR中做简要说明。

 

把图片放到assets文件夹下,然后把assets打包到JAR中,在JAR中从assets中获得需要使用的图片。

ImageDisplayActivity中的代码如下:

package com.wangliang.jar;

import java.io.IOException;

import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;

public class ImageDisplayActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		LinearLayout linearLayout = new LinearLayout(this);
		LayoutParams linearLayoutParams = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
		linearLayout.setLayoutParams(linearLayoutParams);
		linearLayout.setOrientation(LinearLayout.VERTICAL);
		
		TextView textView = new TextView(this);
		LayoutParams textViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		textViewParams.gravity = Gravity.CENTER_HORIZONTAL;
		textView.setLayoutParams(textViewParams);
		textView.setText("ImageDisplayActivity!:)");
		
		ImageView imageView = new ImageView(this);
		LayoutParams imageViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		imageViewParams.gravity = Gravity.CENTER_HORIZONTAL;
		imageView.setLayoutParams(imageViewParams);
		AssetManager assetManager = getAssets();
		try {
			Drawable drawable = Drawable.createFromStream(assetManager.open("box_gray.png"), null);
			imageView.setImageDrawable(drawable);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		linearLayout.addView(textView);
		linearLayout.addView(imageView);
		
		setContentView(linearLayout);
		
	}
	
}

 运行效果如下:


从XJar项目导出JAR,然后添加到XJarTest项目中,注意在Manifest.xml文件中添加Activity的声明,如下:

<activity android:name="com.wangliang.jar.ImageDisplayActivity"></activity>

 然后运行,效果如下图:


也许你会提出疑问:XJarTest项目在assets文件夹下的图片可以是任意名称的,而且不知道XJar项目的assets文件夹中的内容,那么,重名的可能性还是会存在!我们可以通过在XJar中创建多级文件夹来保存需要使用的图片,这样可以降低这种可能性。

 

当然,也可以把图片资源放到和类文件同级的文件夹内,如图:

此时获得图片的代码要做调整,如下是一种可行性的调整:

Drawable drawable = Drawable.createFromStream(getClass().getResourceAsStream("/com/wangliang/jar/box_blue.png"), null);

 在XJarTest中运行的效果如图:


 

 

《测试代码》

  • 大小: 40.6 KB
  • 大小: 12.4 KB
  • 大小: 17.2 KB
  • 大小: 21.6 KB
  • 大小: 5.9 KB
  • 大小: 6.5 KB
  • 大小: 8.4 KB
  • 大小: 7 KB
分享到:
评论

相关推荐

    android 将项目生成jar包Demo

    在Android开发中,有时我们需要将一个模块或库打包成JAR文件,以便在其他项目中进行复用。本文将详细讲解如何将一个Android项目转换为JAR库,并在另一个项目中进行测试。我们将以"android 将项目生成jar包Demo"为例...

    androidx相关jar

    包含androidx.core.jar/androidx.appcompat.jar/androidx.drawerlayout.jar,代替android-support-v4.jar。 解决无法找到ContextCompat.checkSelfPermission问题,替换v4包中的ActionBarDrawerToggle、DrawerLayout...

    Android RSA加密jar包

    1. **导入jar包**:首先,将下载的"Android RSA加密jar包"导入到Android项目的libs目录下,然后在项目的构建配置中添加对这个库的引用。 2. **生成密钥对**:使用Java的`KeyPairGenerator`类来生成RSA密钥对。通常...

    android BASE64的jar包

    在Android应用中使用BASE64编码和解码时,需要注意以下几点: 1. **安全性**:虽然`sun.misc.BASE64Decoder`在某些Android版本中可用,但它不是官方API的一部分,可能在未来的Android版本中被移除。因此,推荐使用...

    platforms/android-29/android.jar

    替换sdk路径下/platforms/android-29/android.jar,能够解决在android studio 看源码部分类报红及能够正常编译项目。解决替换后报错:Failed to transform file 'android.jar' to match attributes {artifactType=...

    Qt on Android调用Jar包

    在Qt on Android的上下文中,我们可以使用JNI来调用Java代码,这些代码可能封装在.jar文件中,如第三方库。 步骤1:准备Java层 创建一个Java类,该类将作为与.jar包交互的桥梁。这个类需要继承自`java.lang.Object`...

    Android使用的zxing相关jar包以及zxing源码

    在Android开发中,ZXing(Zebra Crossing)是一个开源项目,提供了一套全面的二维码和条形码读取和生成工具。ZXing库为开发者提供了跨平台的二维码和条形码处理能力,使得在Android应用中集成二维码扫描和生成功能变...

    android-support-v4.jar最新版

    要在项目中使用`android-support-v4.jar`,首先需要将其添加到项目的依赖库中。在现代的Android Studio项目中,这通常通过在Gradle配置文件中添加依赖来完成,而不是手动导入JAR文件。 **4. 更新与维护** 由于`...

    abe.jar android备份文件提取工具

    在Android操作系统中,用户可以创建备份文件以保存他们的应用程序数据、设置和其他重要信息。这些备份文件通常采用一种称为AB(Android Backup)的特殊格式。AB文件是加密的,并且包含了多个应用的数据,使得用户...

    android-support-v7-appcompat.jar和android-support-v4.jar包

    在Android开发中,`android-support-v7-appcompat.jar`和`android-support-v4.jar`是两个非常关键的库文件,它们提供了对早期Android版本的兼容性支持,以及一系列额外的功能和组件。这两个库文件属于Google的...

    android正确导入jar包

    本文将详细介绍如何在Android项目中正确地导入jar包,并避免相关错误。 #### 常见错误及原因分析 当使用Eclipse作为开发工具时,按照常规方法添加jar包(通过`Build Path -&gt; Java Build Path -&gt; Libraries -&gt; Add ...

    Android HttpClient用到的jar包

    在Android中使用HttpClient进行文件上传的步骤通常如下: 1. **导入依赖**:首先需要将这两个jar包添加到项目的lib目录,并在项目构建路径中包含它们。对于现代的Android项目,可能需要将这些依赖项转化为AAR或添加...

    Android的Jar包从主项目工程中读取并展示资源文件

    作为Android程序开发,我们自己在实际项目的开发过程中,经常会遇到我们打的Jar包需要动态的读取主项目工程中的资源文件,那么有没有一种好的方式,能够让Jar包非常方便的读取与展示主工程中的资源文件呢?...

    Android.jar

    在运行时,Android系统会替换应用程序中的Android.jar引用,使用实际设备上的系统库来执行代码,从而实现与硬件的交互和系统的服务调用。 在实际开发中,Android Studio会自动链接Android.jar,开发者无需手动引入...

    Android引用百度地图jar包

    完成上述步骤后,你就可以在Android应用中使用百度地图的API了。例如,初始化地图、设置地图标记、进行地理编码和反编码、开启定位服务等。在使用过程中,别忘了遵守百度地图的使用协议,并在应用中添加相应的权限...

    android-support-v4.jar各种版本

    内容包含:android-support-v4_1.6.0_26_20120316.jar android-support-v4_1.6.0_26_20120623.jar android-support-v4_1.6.0_26_20120730.jar android-support-v4_1.6.0_26_20121109.jar android-support-v4_1.6.0_26...

    android-support-v7.jar

    在Android开发中,`android-support-v7-appcompat`库是一个至关重要的组件,它极大地扩展了Android API的功能,使得开发者能够在更广泛的设备上实现一致的用户界面和交互体验。`android-support-v7.jar`是这个库的...

    android-support-v4 .jar,android-support-annotations.jar

    5. **Fragment支持**:对于复杂的应用,Fragment是管理界面和用户交互的关键组件,v4支持库提供了Fragment的全面支持,包括在低版本Android上的兼容。 然而,随着Android平台的发展,AndroidX库已经取代了原有的...

Global site tag (gtag.js) - Google Analytics