Java 如何在drawable中获取图像的ID
我对安卓系统比较陌生,我正在开发一个带有拖放功能的水平滚动视图。现在一切都很好,我可以拖动图像并将其放置在放置区域中,包括失败和成功的放置次数。目前,正在拖动的图像及其阴影看起来是一样的。我想要的是,当我拖动一个图像时,该图像出现的阴影是我选择的drawables中的一个图像 以下是阴影生成器的代码:Java 如何在drawable中获取图像的ID,java,android,android-studio,drag-and-drop,Java,Android,Android Studio,Drag And Drop,我对安卓系统比较陌生,我正在开发一个带有拖放功能的水平滚动视图。现在一切都很好,我可以拖动图像并将其放置在放置区域中,包括失败和成功的放置次数。目前,正在拖动的图像及其阴影看起来是一样的。我想要的是,当我拖动一个图像时,该图像出现的阴影是我选择的drawables中的一个图像 以下是阴影生成器的代码: void dragAndDropImage(int imageId) { // int drawableid = getResources().getIdentifier("drawabl
void dragAndDropImage(int imageId)
{
// int drawableid = getResources().getIdentifier("drawable/a1", "id", getPackageName());
final ImageView drag = (ImageView)findViewById(imageId);
drag.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent arg1) {
// TODO Auto-generated method stub
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadow = new View.DragShadowBuilder(drag);//I want the drawable id here View.DragShadowBuilder(drawableid)
v.startDrag(data, shadow, null, 0);
return false;
}
});
我想从drawables中获取一个特定图像的id,然后在View.DragShadowBuilder(drawables中图像的id)中使用它来更改阴影的图像。感谢您在这方面提供的任何帮助。这将是:
R.drawable.resourcename
确保没有导入Android.R名称空间,因为它可能会混淆Eclipse(如果您使用的是这个名称空间的话)
如果这不起作用,您可以始终使用上下文的getResources方法
Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);
其中this.context被初始化为活动、服务或任何其他context子类
更新:
如果它是您想要的名称,Resources类(由getResources()返回)有一个getResourceName(int)方法和一个getResourceTypeName(int)
更新2:
Resources类具有以下方法:
public int getIdentifier(字符串名称、字符串定义类型、字符串定义包)
返回指定资源名称、类型和包的整数
String uri = "@drawable/yourdrawable";
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
你能试试这个吗?试试这个
final ImageView drag = (ImageView)findViewById(R.id.imageId);
drag.setImageResource(R.drawable.a1);
View.DragShadowBuilder shadow = new View.DragShadowBuilder(drag);
假设您的Android资源文件夹中有多个Drawable,需要迭代哪些内容。您使用特定的命名模式,并希望使用它来确定资源ID 以下步骤显示了如何基于资源名称获取资源ID:
// Name of resource
//Type
// Package of the app
int identifier = getResources().getIdentifier("pic1", "drawable", "android.demo");
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageResource(identifier);
(我每次登录时都会看到这篇文章获得更多的浏览量,我很久以前就解决了这个问题,但我将发布这个解决方案,希望它能帮助其他人。)
在我的例子中,我有多个可绘制的图像,因此我想使用它们
for (int j=1; j<10; j++)
{
setImages("drawable/img" +j);
// SetPopup(drag);
}
void setImages(final String draw)
{
int id12 = getResources().getIdentifier(draw, "id", "your_package_name");
drag1.setImageResource(id12);
for(int j=1;jR.drawble.imageIdReturns drawable,而我需要imageview或int。以下是错误-DragShadowBuilder中的DragShadowBuilder(android.view.view)无法应用于(int)您是否遇到此链接?这可能有助于您实现DragShadowBuilder。问题是,阴影生成器已经可以正常工作。我想要的是以某种方式访问可绘制图形,并使用它们在单击时创建阴影。它正在将所有图像更改为特定的阴影图像,而它应该是图像保留sam的位置e仅显示其阴影(拖动时显示)更改。我不明白。请您解释一下好吗?imageId是水平滚动视图线性布局中实际图像的id。基本上,它是正在拖动的项目的id,或者您可以说它是为了标识要拖动或正在拖动的图像视图。当我使用final ImageView drag=(ImageView)findViewById(R.id.imageId)时;drag.setImageResource(R.drawable.a1);它也更改了我的原始图像,而我希望原始图像保持不变,只希望阴影更改。