Gallery画廊预览效果
2016-09-08 15:07
260 查看
实现画廊效果,并点击小图展示大图:
1.不用传统的资源获取方法,而是通过反射得到所有公有或私有的资源声明区域
2.通过该区域可以得到其中每一个资源的ID
3.测试证明,无论是jpg还是png的图片,凡是属于drawable的资源都可以反射出来
具体代码和页面实现:
xml部分:
MainActivity:
以上就是全部代码,大家可以自个去试试,有什么问题可以留言。或者在微信公众号“技术帮团队”上找我们。
1.不用传统的资源获取方法,而是通过反射得到所有公有或私有的资源声明区域
//drawable的声明区域(通过反射来得到所有公有或私有的资源) Field[] myfields = R.drawable.class.getDeclaredFields();
2.通过该区域可以得到其中每一个资源的ID
//通过区域得到里面每一个图片资源的ID(R.drawable.class) int index = myfields[i].getInt(R.drawable.class);
3.测试证明,无论是jpg还是png的图片,凡是属于drawable的资源都可以反射出来
具体代码和页面实现:
xml部分:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#abcdef" android:orientation="vertical" tools:context=".MainActivity" > <ImageView android:id="@+id/myImg" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="2" /> <Gallery android:id="@+id/mygallery" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" android:spacing="10dp" /> </LinearLayout>
MainActivity:
public class MainActivity extends Activity implements OnItemClickListener {
private ImageView myImg;//大图
private Gallery mygallery;//画廊
private ImageAdapter imageAdapter;//适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myImg = (ImageView)findViewById(R.id.myImg);
mygallery = (Gallery)findViewById(R.id.mygallery);
imageAdapter = new ImageAdapter(this);
mygallery.setAdapter(imageAdapter);
mygallery.setOnItemClickListener(this);
}
private class ImageAdapter extends BaseAdapter{
private Context mContext;
//ID资源集合
private ArrayList<Integer> myImgList = new ArrayList<Integer>();
private ArrayList<Object> myImgSize = new ArrayList<Object>();
public ImageAdapter(Context mContext) {
super();
this.mContext = mContext;
try {
//drawable的声明区域(通过反射来得到所有公有或私有的资源) Field[] myfields = R.drawable.class.getDeclaredFields();
for(int i=0;i<myfields.length;i++){
//通过区域得到里面每一个图片资源的ID(R.drawable.class) int index = myfields[i].getInt(R.drawable.class);
myImgList.add(index);
Bitmap bmImg = BitmapFactory.decodeResource(getResources(), index);
int size[] = new int[2];//声明数组,指定长度,保存每张图片的宽、高
size[0] = bmImg.getWidth();
size[1] = bmImg.getHeight();
myImgSize.add(size);//数组对象保存到集合中
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int getCount() {
return myImgList.size();
}
@Override
public Object getItem(int position) {
return myImgList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
//从资源集合中取value,intValue()方法把Integer类型转成int类型
imageView.setImageResource(myImgList.get(position).intValue());
imageView.setScaleType(imageView.getScaleType().FIT_XY);
int size[] = new int[2];
size = (int[])myImgSize.get(position);
imageView.setLayoutParams(new Gallery.LayoutParams(size[0],size[1]));
return imageView;
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
setTitle(String.valueOf(arg2+1));
myImg.setImageResource(imageAdapter.myImgList.get(arg2).intValue());
}
}
以上就是全部代码,大家可以自个去试试,有什么问题可以留言。或者在微信公众号“技术帮团队”上找我们。
相关文章推荐
- ViewPager实现Gallery画廊效果——仿慕课网app-求职路线计划-效果(二)
- RecyclerView 实现gallery画廊效果
- 89 Android Gallery 简单的画廊效果
- RecyclerView 实现gallery画廊效果
- 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化
- 仿百度壁纸client(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化
- Android 使用ViewPager实现类似gallery画廊的效果(画廊效果之ViewPager显示多个图片)
- Android开发学习之基于ViewPager实现Gallery画廊效果
- Android 用Gallery和ImageSwicher实现画廊效果,展示图片+完整源代码
- 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化
- RecycleView实现的Gallery画廊效果(图片制作成圆角)
- Android开发实现Gallery画廊效果的方法
- Android编程滑动效果之Gallery+GridView实现图片预览功能(附demo源码下载)
- RecyclerView实现Gallery画廊效果
- RecyclerView 实现gallery画廊效果
- 【转】Android 使用ViewPager实现类似gallery画廊的效果(画廊效果之ViewPager显示多个图片)
- Gallery实现ViewPager的页面切换效果、以及实现图片画廊效果
- Android画廊效果-Gallery和ViewPager不同实现
- 基于ViewPager实现Gallery画廊效果
- android gallery实例(画廊效果)