在android中,当我点击相应的按钮时,是可以向前还是向后移动?

时间:2012-02-07 12:51:48

标签: android

我对android ImageView有疑问。我正在制作一个示例应用程序,以在我的drawable文件夹中显示图像。首先,我在布局中使用GalleryviewImageview来显示图像,当我点击GalleryView中的图像时,相应的图像会显示在ImageView中。现在我想这样实现,enter image description here

也就是说,我在res/drawable文件夹中设置了10个图像,图像将显示在相应的按钮单击中,如果我单击前面按钮,将显示ImageView中的图像以前进的方式,否则我单击后退按钮ImageView中的图像向后移动。是否可以这样做。

我使用了以下代码,但图片不会显示

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="333dp"
        android:src="@drawable/ic_launcher" />

    <Gallery
        android:id="@+id/galleryView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/backBTN"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="B" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="imagePosition"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <Button
            android:id="@+id/frontBTN"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/backBTN"
            android:layout_alignBottom="@+id/backBTN"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="F" />
    </RelativeLayout>

</LinearLayout>

我的Java代码 MainActivity.jav a是,

package com.test.button.wallpaper;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    Button front, back;
    ImageView mImage;
    Gallery mGallery;
    int image_postion;
    private int[] gal = { R.drawable.img_2, R.drawable.img_3, R.drawable.img_4,
            R.drawable.img_5 };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        front = (Button) findViewById(R.id.frontBTN);
        back = (Button) findViewById(R.id.backBTN);
        mImage = (ImageView) findViewById(R.id.imageView);
        mGallery = (Gallery) findViewById(R.id.galleryView);
        mGallery.setAdapter(new ImageAdapter(this));
        mGallery.setVisibility(View.GONE);
        mGallery.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int loc,
                    long arg3) {
                // TODO Auto-generated method stub
                image_postion = loc;
                System.out.println("Inside the Gallery");

            }
        });

        back.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                int position = mGallery.getSelectedItemPosition();
                if (position < mGallery.getCount() - 1)
                    mGallery.setSelection(position + 1);

            }
        });

        front.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                int position = mGallery.getSelectedItemPosition();
                if (position >= 1)
                    mGallery.setSelection(position - 1);

            }
        });
    }

    public class ImageAdapter extends BaseAdapter {
        private Context ctx;
        int imageBackground;

        public ImageAdapter(Context c) {
            ctx = c;
            // TypedArray ta = obtainStyledAttributes(R.styleable.Gallery1);
            // imageBackground = ta.getResourceId(
            // R.styleable.Gallery1_android_galleryItemBackground, 1);
            // ta.recycle();
        }

        @Override
        public int getCount() {

            return gal.length;
        }

        @Override
        public Object getItem(int arg0) {

            return arg0;
        }

        @Override
        public long getItemId(int arg0) {

            return arg0;
        }

        @Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {
            ImageView iv = new ImageView(ctx);
            iv.setImageResource(gal[arg0]);
            iv.setScaleType(ImageView.ScaleType.FIT_XY);
            iv.setLayoutParams(new Gallery.LayoutParams(150, 120));
            iv.setBackgroundResource(imageBackground);
            return iv;
        }

    }
}

2 个答案:

答案 0 :(得分:2)

是的,只需将setSelection置于

位置
btnNext.setOnClickListener(new View.OnClickListener()
{
     public void onClick(View view)
     {
          int position=gallery.getSelectedIndex();
          if(position<gallery.getCount()-1)
            gallery.setSelection(position+1);
     }
});


btnPrevious.setOnClickListener(new View.OnClickListener()
{
     public void onClick(View view)
     {
          int position=gallery.getSelectedIndex();
          if(position>=1)
              gallery.setSelection(position-1);
     }
});

答案 1 :(得分:1)

我做同样的事情,它在我的应用程序中完美地运作

这个xml

<?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:ns="http://schemas.android.com/apk/res/com.colors.abc"   
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" >         
   <RelativeLayout
       android:id="@+id/item"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" >        
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"             
        android:background="@drawable/image" />
     <Button
         android:id="@+id/back"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"        
         android:text="small" />
    <Button
        android:id="@+id/forword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"         
        android:text="foeword" />
   </RelativeLayout>
 </RelativeLayout>

和java

          setimage(present);        
        back.setEnabled(false);     
        back.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {               

            if (past==1) {
                back.setEnabled(false);
            }else {
                back.setEnabled(true);
            }
            if(past<=10) forword.setEnabled(true);

            setimage(past);                     

           }                
          });   

                forword.setOnClickListener(new OnClickListener() {              
            public void onClick(View v) {                   

                if(future==10){                 
                    forword.setEnabled(false);
                }else {
                    forword.setEnabled(true);
                }
                if(future>=2) {
                    back.setEnabled(true);
                }                   
                setimage(future);                    
            }               
        });