我对Android比较陌生,我正在使用拖放功能处理水平滚动视图。现在一切都工作得很好我可以拖动图像并将其放入放置区域,计算失败和成功的丢弃。现在,正在拖动的图像和它的阴影看起来是一样的。我想要的是,当我拖动图像时,为该图像显示的阴影是我选择的可绘制图像。
以下是阴影构建器的代码:
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)中使用它来更改阴影的图像。在这方面的任何帮助表示赞赏。
答案 0 :(得分:1)
这将是:
R.drawable.resourcename
确保您没有导入Android.R名称空间,因为它可能会混淆Eclipse(如果你正在使用它)。
如果这不起作用,您可以始终使用上下文的getResources方法......
Drawable resImg = this.context.getResources().getDrawable(R.drawable.resource);
this.context初始化为Activity,Service或任何其他Context子类。
更新
如果它是你想要的名字,那么Resources类(由getResources()返回)有一个getResourceName(int)方法和一个getResourceTypeName(int)?
更新2:
Resources类有这个方法:
public int getIdentifier(String name,String defType,String defPackage) 返回指定资源名称的整数,类型&封装
答案 1 :(得分:0)
String uri = "@drawable/yourdrawable";
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
你能试试吗?
答案 2 :(得分:0)
试试这个,
final ImageView drag = (ImageView)findViewById(R.id.imageId);
drag.setImageResource(R.drawable.a1);
View.DragShadowBuilder shadow = new View.DragShadowBuilder(drag);
答案 3 :(得分:0)
假设您的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);
答案 4 :(得分:0)
(我每次登录时都会看到这篇文章获得更多观看次数,很久以前我就解决了这个问题,但是我会发布解决方案,希望能帮助其他人。) 在我的情况下,我在Drawable中有多个我想要使用的图像
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);
我刚刚发布了一些代码,帮助我直接从drawables访问不同的图像,并将它们用作多个imageViews上的拖动图像。