-1

フェード矢印とズームボタンを備えた ImageSwitcher を使用していますが、唯一の問題は、ボタン機能を設定して画像を変更できないことです。

コードは次のとおりです。

public class doloroso1 extends Activity implements
OnTouchListener, AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {

    private Integer[] mThumbIds = {
                R.drawable.d11, 
                R.drawable.d12,
                R.drawable.d13, 
                R.drawable.d14,
                R.drawable.d15, 
                R.drawable.d16,
                R.drawable.d17};


        private Integer[] mImageIds = {
                R.drawable.d11, 
                R.drawable.d12,
                R.drawable.d13, 
                R.drawable.d14,
                R.drawable.d15, 
                R.drawable.d16,
                R.drawable.d17};  

     View prev,next,zoom;
     Handler handler = new Handler();

      private void scheduleHideButtons() {
          handler.removeCallbacks(hideButtonsRunnable);
          handler.postDelayed(hideButtonsRunnable, 5000);
      }
      private Runnable hideButtonsRunnable = new Runnable() {
            @Override public void run() {
                fadeButtons(false);
            }  };     
            private void fadeButtons(final boolean fadeIn) {
                if (fadeIn) {
                    scheduleHideButtons();
                }
                Animation anim = AnimationUtils.loadAnimation(this, fadeIn?R.anim.fade_in:R.anim.fade_out);
                prev.startAnimation(anim);
                next.startAnimation(anim);
                zoom.startAnimation(anim);
                anim.setAnimationListener(new AnimationListener() {
                @Override
                public void onAnimationEnd(Animation animation) {
                        prev.setVisibility(fadeIn?View.VISIBLE:View.GONE);
                        next.setVisibility(fadeIn?View.VISIBLE:View.GONE);
                        zoom.setVisibility(fadeIn?View.VISIBLE:View.GONE);
                    }
                    @Override public void onAnimationRepeat(Animation animation) { }
                    @Override public void onAnimationStart(Animation animation) { }             
                });}


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.doloroso1);


       mSwitcher = (ImageSwitcher) findViewById(R.id.Imagen);
       mSwitcher.setFactory(this);
       mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                android.R.anim.fade_in));
       mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                android.R.anim.fade_out));
        mSwitcher.setOnTouchListener(this);         
        prev = findViewById(R.id.anterior);        
        next = findViewById(R.id.siguiente);
        zoom = findViewById(R.id.zoom);
        scheduleHideButtons();



        Gallery g = (Gallery) findViewById(R.id.galeria);
        g.setAdapter(new ImageAdapter(this));
        g.setOnItemSelectedListener(this);

    }

        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
            mSwitcher.setImageResource(mImageIds[position]);}


        public void onClickListener1(final int position, View convertView, ViewGroup parentparent, View v, int id) {
             next.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View view) {
                   mSwitcher.setImageResource(mImageIds[position + 1]);}});           ;
        }


        public void onClickListener2(final int position, View convertView, ViewGroup parentparent, View v, int id) {
             prev.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {
                      mSwitcher.setImageResource(mImageIds[position - 1]);}});}




    public void onNothingSelected(AdapterView<?> parent) {
    }

    public View makeView() {
        ImageView i = new ImageView(this);
        i.setBackgroundColor(0xFF000000);
        i.setScaleType(ImageView.ScaleType.FIT_CENTER);
        i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));
        return i;
    }

    private ImageSwitcher mSwitcher;

    public class ImageAdapter extends BaseAdapter {
        public ImageAdapter(Context c) {
            mContext = c;
        }

        public int getCount() {
            return mThumbIds.length;
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView i = new ImageView(mContext);

            i.setImageResource(mThumbIds[position]);
            i.setAdjustViewBounds(true);
            i.setLayoutParams(new Gallery.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            i.setBackgroundResource(R.styleable.galeria_android_galleryItemBackground);
            return i;
        }




    }



    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction()==MotionEvent.ACTION_DOWN) {
            if (prev.getVisibility()==View.GONE) {
                fadeButtons(true);
            }
            else {
                scheduleHideButtons();
            }
        }
        return false;}


    private Context mContext;
    }
4

1 に答える 1

0

宣言する必要があると思います:

ImageView i = new ImageView(mContext);

前に、onclickで呼び出すことができるように

i.setImageResource(index);

おそらく、index変数を作成して、配列内のどこに人がいるかを把握する必要もあります

于 2011-05-18T16:33:33.220 に答える