如何在drawable

时间:2017-01-05 07:01:23

标签: java android android-studio drag-and-drop

我对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)中使用它来更改阴影的图像。在这方面的任何帮助表示赞赏。

5 个答案:

答案 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上的拖动图像。