Проведите изображение с помощью кнопки и пальцев - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь создать собственную галерею с изображениями, отображаемыми в полноэкранном режиме, и иметь возможность проводить пальцем между различными изображениями с помощью кнопок «Предыдущая Следующая» и пальцами. Итак, на данный момент я выполнил часть с изменением изображений пальцами, но у меня былочтобы перепроектировать мой xml-файл и всю структуру и логику моего кода, и мне нужна небольшая помощь или предложения о том, как добавить новый материал. Итак, старый код, который я использовал для перелистывания изображений пальцами, был таким:

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        HorizontalPager realViewSwitcher = new HorizontalPager(getApplicationContext());

        ImageView img1 = new ImageView(getApplicationContext());
        ImageView img2 = new ImageView(getApplicationContext());
        ImageView img3 = new ImageView(getApplicationContext());
        ImageView img4 = new ImageView(getApplicationContext());
        ImageView img5 = new ImageView(getApplicationContext());
        ImageView img6 = new ImageView(getApplicationContext());

        img1.setImageResource(R.drawable.one);
        img2.setImageResource(R.drawable.two);
        img3.setImageResource(R.drawable.three);
        img4.setImageResource(R.drawable.four);
        img5.setImageResource(R.drawable.five);
        img6.setImageResource(R.drawable.six);

        realViewSwitcher.addView(img1);
        realViewSwitcher.addView(img2);
        realViewSwitcher.addView(img3);
        realViewSwitcher.addView(img4);
        realViewSwitcher.addView(img5);
        realViewSwitcher.addView(img6);

        setContentView(realViewSwitcher);

И этот код показывает изображение в полноэкранном режиме, и я могу провести между ними. Теперь мне нужно сделать что-то вроде этого:

new design

Я хочу бытьвозможность смахивать изображения с помощью кнопок и пальца. И второй вопрос: как мне скрыть панель сверху (Back, Galler, Info) и панель снизу (Previous, Next), показать изображение в полноэкранном режиме и при этом иметь возможностьсильно ударить изображения пальцами.Вот как выглядит мой xml-файл:

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

            <ImageView 
                android:id="@+id/single_card"
                android:src="@drawable/one"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:id="@+id/actionbar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#000000"
                android:orientation="horizontal"
                android:layout_gravity="center"
                android:padding="10dp"
                android:layout_alignParentTop="true" >

                <Button
                    android:id="@+id/back_button"
                    android:text="Back"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:background="#333333"
                    android:layout_centerVertical="true"
                    android:textSize="13dp"
                    android:textColor="#ffffff"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="5dp"
                    android:paddingBottom="5dp" />

                <TextView 
                    android:text="Gallery"
                    android:textStyle="bold"
                    android:textSize="15dp"
                    android:textColor="#FFFFFF"
                    android:id="@+id/single_msg_title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" 
                    android:layout_centerInParent="true"/>

                <Button
                    android:id="@+id/info_button"
                    android:text="Info"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:background="#333333"
                    android:layout_centerVertical="true"
                    android:textSize="13dp"
                    android:textColor="#ffffff"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="5dp"
                    android:paddingBottom="5dp" />

            </RelativeLayout>


            <RelativeLayout 
                android:id="@+id/content"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:layout_alignParentBottom="true"
                android:background="#000000" >


                <Button
                    android:id="@+id/previous_button"
                    android:text="Previous"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#333333"
                    android:layout_alignParentLeft="true"
                    android:textSize="13dp"
                    android:textColor="#ffffff"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="5dp"
                    android:paddingBottom="5dp"
                    android:layout_marginLeft="50dp"
                    android:layout_marginBottom="10dp"
                    android:layout_alignParentBottom="true" />

                <Button
                    android:id="@+id/next_button"
                    android:text="Next"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="#333333"
                    android:layout_alignParentRight="true"
                    android:textSize="13dp"
                    android:textColor="#ffffff"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="5dp"
                    android:paddingBottom="5dp"
                    android:layout_marginRight="50dp"
                    android:layout_marginBottom="10dp"
                    android:layout_alignParentBottom="true" />

            </RelativeLayout>


</RelativeLayout>

Заранее спасибо !!!Любая помощь, предложения или ссылки с примером приветствуются!

Ответы [ 3 ]

3 голосов
/ 10 августа 2011

Используйте для этого проект просмотра потока.Ваш код с добавлением imageViews вообще не является хорошим решением.

см. viewFlow на gitHub.Есть примеры с изображениями также.все, что вам нужно сделать, это добавить этот макет в упражнение, создать адаптер изображения и все.

0 голосов
/ 01 сентября 2013

Для сканирования изображений мы можем просто использовать концепцию ViewPager.

1. установить в вашем макете панель просмотра

    <android.support.v4.view.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
    </RelativeLayout>

2.MyMain.java

                public class MyMain extends Activity {
                      @Override
                    public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.main);

                 ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
                  ImagePagerAdapter adapter = new ImagePagerAdapter();
                  viewPager.setAdapter(adapter);
               }

            private class ImagePagerAdapter extends PagerAdapter {
                 private int[] mImages = new int[] {
                       R.drawable.one,
                       R.drawable.two,
                       R.drawable.hree,
                       R.drawable.four
                           };

                         @Override
                       public int getCount() {
                       return mImages.length;
                         }

             @Override
               public boolean isViewFromObject(View view, Object object) {
                  return view == ((ImageView) object);
                     }

               @Override
               public Object instantiateItem(ViewGroup container, int position) {
                    Context context = MyMain.this;
                  ImageView imageView = new ImageView(context);
               int padding =context.getResources().  
                    getDimensionPixelSize(R.dimen.padding_medium);
                 imageView.setPadding(padding, padding, padding, padding);
                 imageView.setScaleType(ImageView.ScaleType.CENTER);
      imageView.setImageResource(mImages[position]);
      ((ViewPager) container).addView(imageView, 0); 
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
      }


    }
0 голосов
/ 10 августа 2011

Я сделал что-то подобное некоторое время назад, в основном, проведением пальцем влево или пальцем вправо выполните 2 различных действия, и есть кнопки для тех же действий, которые можно нажать .

В своей основной деятельности я регистрирую слушателя, проводящего пальцем:

gestureDetector = new GestureDetector(new ListItemGestureDetector(this));
gestureListener = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (gestureDetector.onTouchEvent(event)) {
            return true;
        }
        return false;
    }
};

Затем в моем эффективном адаптере, который отображает мой список, я регистрирую кнопки и их щелчки (это не будет для вас тем же, но когда я добавляю кнопки в свой макет, я делаю это (вызов и смс являются кнопками в моем макете )

static class ViewHolder {
    TextView name, phone;
    ImageButton call, sms, other;
    //ImageView icon;
}

    ViewHolder holder = new ViewHolder();
    holder.call.setClickable(true);
    holder.call.setFocusable(true);
    holder.call.setTag("call");
    final int pos = position;

    holder.call.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Toast.makeText(context, "CALL", Toast.LENGTH_SHORT).show();
            Cursor c = (Cursor) getItem(pos);
            Intent i = new Intent(Intent.ACTION_CALL);
            String phoneNumber = c.getString(WaddleAddressBook.DATA_ID);
            i.setData(Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, phoneNumber));
            context.startActivity(i);
        }
    });
...