我已经阅读过ImageView。我想用它来显示图像文件。此外,我计划提供更新文件的功能。
您可以教我如何显示图像文件吗?然后在顶部添加一组单选按钮以表示楼层。当我点击第一层时,imageview源更改为image1.png,然后单击第二层单选按钮,更改为image2.png等等。
我正在使用Android平台2.1-update1和eclipse ADT来完成这篇论文。
这是我当前的代码:(尽管单选按钮有一些不合需要的外观)
public class DisplayImageMapActivity extends Activity {
ImageView iv;
private final String FLOOR = "F";
private final String storagePath = Environment.getExternalStorageDirectory() + "/keitaiAppH23";
private final String localMapsPath = storagePath + "/localMaps";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv=(ImageView)findViewById(R.id.storageimage);
RadioGroup levelRGroup = (RadioGroup) findViewById(R.id.level_rgroup);
int levelSize = 8;
for (int i = 0; i < levelSize; i++) {
RadioButton levelRButton = new RadioButton(this);
if(i==0) {
levelRButton.setText(new StringBuffer(i+1).append(FLOOR).append("(start)"));
} else if (i==7) {
levelRButton.setText(new StringBuffer(i+1).append(FLOOR).append("(end)"));
}
levelRButton.setTag((i+1) + FLOOR);
levelRButton.setLayoutParams(
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1));
levelRGroup.addView(levelRButton);
}
levelRGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, final int checkedId) {
iv.setImageURI(Uri.parse(new StringBuffer(localMapsPath)
.append("/").append(group.findViewById(checkedId).getTag()).append(".gif").toString()));
iv.invalidate();
}
});
levelRGroup.getChildAt(0).performClick();
}
}
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_layout"
>
<RadioGroup android:id="@+id/level_rgroup"
android:layout_width="wrap_content" android:orientation="horizontal"
android:layout_height="wrap_content">
</RadioGroup>
<ImageView android:id="@+id/storageimage" android:src="@drawable/icon"
android:layout_width="fill_parent" android:layout_height="wrap_content" />
</LinearLayout>
更新 要求:
遇到的问题:
截图:
答案 0 :(得分:1)
这些修改应该这样做(可能存在一些拼写错误):
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/main_layout"
>
<ImageView android:layout_height="wrap_content" android:layout_width="fill_parent"
android:id="@+id/iView" android:src="@drawable/icon"></ImageView>
<RadioGroup android:id="@+id/level_rgroup"
android:layout_width="fill_parent" android:orientation="horizontal"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/rb1"
android:width="106dip" android:height="80dip" android:text="Floor 1"/>
<RadioButton android:id="@+id/rb2"
android:width="106dip" android:height="80dip" android:text="Floor 2"/>
<RadioButton android:id="@+id/rb3"
android:width="106dip" android:height="80dip" android:text="Floor 3"/>
</RadioGroup>
</LinearLayout>
代码:
public class DisplayImageMapActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RadioGroup levelRGroup = (RadioGroup) mainLayout.findViewById(R.id.level_rgroup);
final ImageView iView = (ImageView) findViewById(R.id.iView);
levelRGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, final int checkedId) {
switch (checkedId) {
case R.id.rb1:
iView.setImageResource(R.drawable.floor_1);
iView.invalidate();
break;
case R.id.rbM2:
iView.setImageResource(R.drawable.floor_2);
iView.invalidate();
break;
case R.id.rb3:
iView.setImageResource(R.drawable.floor_3);
iView.invalidate();
break;
}
}
});
}
}
如果您愿意,可以以编程方式添加这些按钮,如果您希望看到它们,请记住为它们设置layout_width
和其他属性(我将它们放在XML中,因为我已经放置了代码)。
如果您有任何问题,请发表评论。