我正在尝试创建一个Android应用程序。我的Android应用程序中有两个按钮。我希望当我点击下一个按钮时,它会以不同的背景打开相同的活动。下次我再次点击下一个新的背景图片。按下back
按钮,显示上一张图片。如果没有以前的图像,则按下显示菜单。同样,如果背景与最后一张图像相同,则隐藏button
。我不知道该怎么做。
我试过这个:
@Override
public void onCreate(Bundle savedInstanceState)
{
onCreate(savedInstanceState);
back = (Button) findViewById(R.id.back);
next = (Button) findViewById(R.id.next);
back.setOnClickListener(this);
next.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId()==R.id.back)
{
startActivty(new Intent(this,));
}
else if(v.getId()==R.id.next)
{
startActivity(newIntent(this,));
}
}
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"
android:background="@drawable/back">
<Button
android:id="@+id/back"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="25dp"
android:background="@drawable/ques"
android:text="Back" />
<Button
android:id="@+id/next"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/back2"
android:layout_alignBottom="@+id/back2"
android:layout_alignParentRight="true"
android:background="@drawable/ques"
android:text="Next" />
</RelativeLayout>
在布局中,您可以看到我正在使用图像作为背景。我希望当我点击下一个新的背景图像然后下一个等等。
但我不知道如何用不同的背景开始相同的活动。
答案 0 :(得分:1)
不要启动新活动只需更改背景:
在您的活动中保留一系列背景资源,例如:
int[] backgroundResId;
和一个用于存储当前背景索引的int变量:
int currentIndex=0;
现在你的onCreate里面用所有背景drawables的资源id初始化这个数组:
backgroundResId=new int[]{R.drawable.a,R.drawable.b,R.drawable.c};
changeBackground()
在活动中创建函数changeBackground:
private void changeBackground(){
findViewById(R.id.root_layout).setBackgroundResource(backgroundResId[currentIndex]);
}
现在onClick下一个按钮增加currentIndex:
currentIndex++;
if(current<=backgroundResId.length){
changeBackground();
}else{
// setVisibility of next button to invisible
}
onBackButton点击
currentIndex--;
if(current>=0){
changeBackground();
//// setVisibility of next button to visible
}else{
//show menu
}
答案 1 :(得分:1)
制作图像数组并将数据发布到下一个活动:
Intent intent = getIntent();
intent.putExtra("background", imageIdInTheImageArray);
startActivity(intent);
//finish();
并在你的onCreate函数中:
Bundle b = getIntent().getExtras();
if (b != null) {
int background = b.getInt("background");
//set your background
}
答案 2 :(得分:1)
您可以在xml文件中添加 ImageView 。
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
您可以使用此
更改背景ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setBackgroundResource(resId);
答案 3 :(得分:0)
试试这个..
<强>全局:强>
int[] backgrounds = new int[]{ images in drawable as int array };
int count = 0;
Button back,next;
RelativeLayout img_backn_lay;
<强> JAVA:强>
setContentView(R.layout.activity_main);
back = (Button) findViewById(R.id.back);
next = (Button) findViewById(R.id.next);
back.setOnClickListener(this);
next.setOnClickListener(this);
img_backn_lay = (RelativeLayout) findViewById(R.id.main_lay);
img_backn_lay.setBackgroundResource(backgrounds[count]);
count += 1;
<强> ClickListener:强>
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v.getId()==R.id.next)
{
if(backgrounds.length != count){
img_backn_lay.setBackgroundResource(backgrounds[count]);
count += 1;
}else{
Toast.makeText(MainActivity.this, "No images", Toast.LENGTH_LONG).show();
}
}
else if(v.getId()==R.id.back)
{
if(count != 0){
img_backn_lay.setBackgroundResource(backgrounds[count]);
count -= 1;
}else{
Toast.makeText(MainActivity.this, "No images", Toast.LENGTH_LONG).show();
}
}
}
<强> XML:强>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_lay"
android:layout_width="match_parent"
android:layout_height="match_parent" >