根据用户选择设置图像?

时间:2013-02-16 19:32:44

标签: android

我有一个活动,用户可以选择他们的角色。我在屏幕上有三个图像按钮,当用户点击他们想要的角色时,我希望游戏加载另一个活动,然后只显示他们在上一个屏幕中选择的角色的图像。基本上这只是我以后要做的事情的先行者。我在这个网站上找到了一些如何实现这一目标的例子,但我还没有完全解决这个问题。

这就是我在角色选择活动中所拥有的:

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
        intent.putExtra("@drawable/archer", pathToImage);
        startActivity(intent);
        finish();
        }
    });

pathToImage行抛出错误。我到底应该放在什么地方?

应该只显示所选图像的LevelOne活动包含:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    setContentView(R.layout.level_one);



    String path = getIntent().getStringExtra("imagePath");
    Drawable image = Drawable.createFromPath(path);
    Character_Chosen.setImageDrawable(image);
    }

我也对这部分感到困惑。 Character_Chosen条目是应包含所选图像的imageview的名称。

我也对这行代码感到困惑:

String path = getIntent().getStringExtra("imagePath");

这是否意味着我每次都必须手动输入图像路径?如果他们选择不同的图像怎么办?

有没有人有实际工作示例的链接?当我是一个新手并且不知道需要留下什么以及需要去做什么时,伪代码对我来说并不是很有帮助。

3 个答案:

答案 0 :(得分:0)

我会采取另一种方法,而不是将路径传递给您想要显示图像的每个活动(或者说是化身)。
我会将它保存在全局应用程序对象中(通过扩展应用程序),将位图加载到内存或图像路径中,只需在一个位置访问或更改它,并在所有活动中访问该值。

答案 1 :(得分:0)

首先将资源转换为id

Button archerButton = (Button) findViewById(R.id.Button_Archer);
archerButton.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {

    int id =getResources().getIdentifier("imagename", "drawable", getPackageName());  

    Intent intent = new Intent(SelectCharacterActivity.this, LevelOneActivity.class);
    intent.putExtra("image_id", id);
    startActivity(intent);
    finish();
    }
});

LevelOne.java

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.level_one);



int imageId=getIntent().getIntExtra("image_id", 0);
Character_Chosen.setImageResource(imageId)
}

对于所有剩余的按钮,可以采用相同的方式。

快乐编码:)

答案 2 :(得分:0)

我通过采用不同的方法让它运行。

MainActivity.java

我所做的是使用字符串路径传递意图中的R.drawable引用。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnArcher = (Button)findViewById(R.id.button_archer);

    btnArcher.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this,LevelOne.class);
            intent.putExtra("archer_drawable", R.drawable.archer);
            startActivity(intent);
        }
     });

}

在levelOne.java上,我使用了我在MainActivity.java中指定的名称来获取getIntExtra,以获取射手图像的R.drawable资源引用(您可以根据需要分配名称)。最后使用从getIntExtra获得的整数值,并通过调用方法setImageResource(int resId)在图像视图上使用它。

ImageView img;
int drwResource;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level_one);

    //find the ImageView fron level_one.xml
    img = (ImageView)findViewById(R.id.character_image);

    drwResource = getIntent().getIntExtra("archer_drawable", -1);   
    img.setImageResource(drwResource);

}

level_one.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:id="@+id/character_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />
</RelativeLayout>

我希望这会有所帮助。 :)