3

У меня есть gridviewImages, отображаемый на экране Android. Моего требования к слайду полноэкранных ИзображенийAndroid Отображение изображений ползунка FullScreen

Вот мой код:

ImageAdapter:

public class ImageAdapter extends BaseAdapter { 
    private Context mContext; 

    // Constructor 
    public ImageAdapter(Context c) { 
     mContext = c; 
    } 

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

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

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

    // create a new ImageView for each item referenced by the Adapter 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
     } else { 
     imageView = (ImageView) convertView; 
     } 

     imageView.setImageResource(mThumbIds[position]); 
     return imageView; 
    } 

    // Keep all Images in array 
    public Integer[] mThumbIds = { 
     R.drawable.cn1, R.drawable.cn2, 
     R.drawable.cn3, R.drawable.cn4, 
     R.drawable.cn5, R.drawable.cn6, 
     R.drawable.cn7, R.drawable.cn8, 
     R.drawable.cn9, R.drawable.cn10, 
     R.drawable.cn11, R.drawable.cn12 

    }; 
} 

MainActivity:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     GridView gridview = (GridView) findViewById(R.id.gridview); 
      gridview.setAdapter(new ImageAdapter(this)); 
      gridview.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View v, 
         int position, long id) { 

        // Send intent to SingleViewActivity 
        Intent i = 
        new Intent(getApplicationContext(), SingleViewActivity.class); 
        // Pass image index 
        i.putExtra("id", position); 
        Log.d("onCreateMain>>","OnCreateMain"); 

        startActivity(i); 
       } 
      }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

SingleViewActivity:

public class SingleViewActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.single_view); 
     Log.d("onCreate>>","OnCreate"); 

     // Get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 

     Log.d("Position>>>","Position"+position); 
     ImageAdapter imageAdapter = new ImageAdapter(this); 

     ImageView imageView = (ImageView) findViewById(R.id.SingleView); 
     imageView.setImageResource(imageAdapter.mThumbIds[position]); 
    } 

} 

Layout Xml файлы:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/> 

single_view.xml:

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

    <ImageView android:id="@+id/SingleView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 

</LinearLayout> 

Мое требование к слайду полноэкранного изображения, Может ли один Помогите?

ответ

4

ViewPager позволит вам «скользить» между фрагментами, что является именно тем эффектом, который вы пытаетесь достичь. Просто превратить ваш текущий SingleViewActivity в фрагмент:

public class SingleViewFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.single_view, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 

     int resource = getArguments().getInt("image"); 

     ImageView imageView = (ImageView) findViewById(R.id.SingleView); 
     imageView.setImageResource(imageAdapter.mThumbIds[position]); 
    } 
} 

Вам потребуется PagerAdapter генерировать эти фрагменты в случае необходимости.

public class ImagesPagerAdapter extends FragmentPagerAdapter{ 

    public Integer[] mThumbIds = { 
     R.drawable.cn1, R.drawable.cn2, 
     R.drawable.cn3, R.drawable.cn4, 
     R.drawable.cn5, R.drawable.cn6, 
     R.drawable.cn7, R.drawable.cn8, 
     R.drawable.cn9, R.drawable.cn10, 
     R.drawable.cn11, R.drawable.cn12 
    }; 

    @Override 
    public Fragment getItem(int i) { 
     Bundle args = new Bundle(); 
     args.putInt("image", mThumbIds[i]); 

     SingleViewFragment fragment = new SingleViewFragment(); 
     fragment.setArguments(args); 

     return fragment; 
    } 

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

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

public class SingleViewActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pager); 

     // Selected image id 
     int position = getIntent().getIntExtra("id", 0); 

     ViewPager pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(new ImagesPagerAdapter(this)); 
     pager.setCurrentItem(position); 
    } 
} 

Где activiy_pager - это всего лишь макет, содержащий ViewPager, который вам нужен.

+0

Не могли бы вы, как начать singleviewFragment от My MainActicity, если я нажму на элемент Gridview, не могли бы вы рассказать о потоке? – user2580568

+0

Ваша MainActivity в порядке, просто не забудьте использовать контекст Activity для создания намерения вместо приложения, как вы это делаете сейчас. PagerAdapter будет создавать фрагменты для вас, поскольку они необходимы. Я завершил код. – ivagarz

+0

Я пробовал ваш обновленный код, но получаю nullpointerexception, не мог бы вы дать свой EmailId, чтобы я мог отправить вам ваше приложение – user2580568

Смежные вопросы