我有一个活动,用户可以选择他们的角色。我在屏幕上有三个图像按钮,当用户点击他们想要的角色时,我希望游戏加载另一个活动,然后只显示他们在上一个屏幕中选择的角色的图像。基本上这只是我以后要做的事情的先行者。我在这个网站上找到了一些如何实现这一目标的例子,但我还没有完全解决这个问题。
这就是我在角色选择活动中所拥有的:
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");
这是否意味着我每次都必须手动输入图像路径?如果他们选择不同的图像怎么办?
有没有人有实际工作示例的链接?当我是一个新手并且不知道需要留下什么以及需要去做什么时,伪代码对我来说并不是很有帮助。
答案 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>
我希望这会有所帮助。 :)