一个在android中具有不同背景的活动

时间:2014-01-11 09:06:58

标签: android button layout background

我正在尝试创建一个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>

在布局中,您可以看到我正在使用图像作为背景。我希望当我点击下一个新的背景图像然后下一个等等。

但我不知道如何用不同的背景开始相同的活动。

4 个答案:

答案 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" >