
正文
android画廊,Android画廊并旋转
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
android 3d画廊(转)
public class GalleryActivity2extends AppCompatActivity {
private LayoutInflatermLayoutInflater;
private ViewPagermVp;
private int[]mImg =new int[]{R.mipmap.pic4, R.mipmap.pic5, R.mipmap.pic6, R.mipmap.pic4, R.mipmap.pic5};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
mLayoutInflater = LayoutInflater.from(this);
mVp = (ViewPager) findViewById(R.id.vp_gallery_vp);
mVp.setAdapter(new MyAdapter());
mVp.setOffscreenPageLimit(mImg.length);//设置预加载数量
mVp.setPageMargin(-150);//控制两幅图之间的间距
mVp.setPageTransformer(true, new ZoomOutPageTransformer());
//viewPager左右两边滑动无效的处理
findViewById(R.id.ll_gallery_outer).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return mVp.dispatchTouchEvent(motionEvent);
}
});
}
class MyAdapterextends PagerAdapter {
@Override
public int getCount() {
return mImg.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public ObjectinstantiateItem(ViewGroup container, final int position) {
View view =mLayoutInflater.inflate(R.layout.item_img, container, false);
ImageView img = view.findViewById(R.id.img_item_img);
//img.setImageResource(R.mipmap.sea);
img.setImageResource(mImg[position]);
img.setScaleType(ImageView.ScaleType.CENTER_CROP);
img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(GalleryActivity2.this, "" +position, Toast.LENGTH_SHORT).show();
}
});
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
//设置切换动画
public class ZoomOutPageTransformerimplements ViewPager.PageTransformer {
//自由控制缩放比例
private static final float MAX_SCALE =1f;
private static final float MIN_SCALE =0.6f;//0.85f
@Override
public void transformPage(View page, float position) {
if (position =1) {
float scaleFactor =MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE -MIN_SCALE);
page.setScaleX(scaleFactor);
if (position 0) {
page.setTranslationX(-scaleFactor *2);
}else if (position 0) {
page.setTranslationX(scaleFactor *2);
}
page.setScaleY(scaleFactor);
}else {
page.setScaleX(MIN_SCALE);
page.setScaleY(MIN_SCALE);
}
}
}
activity_gallery.xml
android:id="@+id/ll_gallery_outer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:orientation="vertical"
android:id="@+id/vp_gallery_vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="50dp"
android:clipChildren="false" /
item_img.xml
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:id="@+id/img_item_img"
android:layout_width="200dp"
android:scaleType="centerCrop"
android:layout_height="100dp"
android:src="@mipmap/pic4" /
相关问答
Q1: android 卡片画廊效果及RecycleView、ViewPager、ScrollView之前的冲突解决
1、内容需要通过卡片的形式来展现,还有支持加载更多,所以最底部使用RecyclerView,最好是做成预加载形式,提前n页加载下一页,这样体验更好。
2、为了展示更多内容卡片内要支持垂直分页,这时候我使用了ViewPager,一是可以更好的管理分页内容,二是ViewPager的垂直分页容易实现,三是可以处理不同控件之前的滑动冲突
3、ViewPager第一页使用的可回弹的ScrollView,可以在下拉的时候做一些动画之类的操作,例如关注操作等。
4、ViewPager的第二页只是一个普通的ScrollView,具体使用可以根据实际情况来处理
1、RecycleView的分页效果基于PagerSnapHelper,RecyclerView在25.1.0版本中添加了一盒基于SnapHelper的子类PagerSnapHelper,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示。
2、卡片的效果是在滑动的时候根据RecycleView的偏移量计算缩放因子进行缩放
3、RecycleView的item内有一个垂直分页的VerticalViewPager,VerticalViewPager是在ViewPager上转换X,Y即可
4、解决ViewPager与RecycleView滑动的冲突,在ViewPager中屏蔽父视图的上下滑动事件
5、解决ViewPager子视图ScrollView的冲突,在ViewPager中拦截事件
6、解决ViewPager与BounceScrollView的冲突,在下拉过程中有时会被ViewPager拦截
以上就是此项目中的所有关键点。
ScrollViewDemo 欢迎Star
RecycleViewCardGallary
Q2: android画廊怎样做出超炫效果
首先来看下面的效果:
从上面的图片可以看到,当添加多张图片的时候,能够在下方形成一个画廊的效果,我们左右拉动图片来看我们添加进去的图片,效果是不是好了很多呢?下面来看看怎么实现吧!
上面的效果类似Android里面ViewPage的效果,但是跟ViewPager有所不同,ViewPager每次只能显示一张图片。
其实我们是利用到了View的clipChildren属性,我们在这里要把ViewPager以及它的父窗体都设置为false,如下:
android:clipChildren="false"
因为如果clipChildren属性设置为true,就表明我们要将children给clip掉,就是说对于子元素来说,超出当前view的部分都会被切掉,那我们在这里把它设置成false,就表明超出view的部分,不要切掉,依然显示。
xml代码部分:
!-- 配置container和pager的clipChildren=false, 并且指定marginLeft 和 marginRight 的值--
LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="100dp"
android:clipChildren="false"
android:gravity="center_horizontal"
android:layerType="software"
android:orientation="horizontal"
android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="110dp"
android:layout_marginRight="110dp"
android:clipChildren="false"
/android.support.v4.view.ViewPager
/LinearLayout
Java代码部分:
// 1.设置幕后item的缓存数目
mViewPager.setOffscreenPageLimit(3);
// 2.设置页与页之间的间距
mViewPager.setPageMargin(10);
// 3.将父类的touch事件分发至viewPgaer,否则只能滑动中间的一个view对象
container.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mViewPager.dispatchTouchEvent(event);
}
});
Q3: 在android系统 里的 gallery什么意思啊
android系统里的“gallery”指的是图库相册。
gallery 表示:n. 画廊;走廊;旁听席;地道;vt. 在…修建走廊;在…挖地道;vi. 挖地道
相关短语
1、art gallery 美术馆;画廊
2、photo gallery 图片库
3、picture gallery 画馆;美术馆
扩展资料:
近义词:n. 画廊;走廊;旁听席;地道 hall、passage、corridor、underground、subway
gallery 来自拉丁语Galilaea, 现巴勒斯坦地名Galilee,原指位于Galilee的教堂门廊,走廊。
双语例句
1、Before we go to the gallery.
在我们去画廊之前。
2、Is this your gallery?
这是你的画廊吗?
3、So what did dad have to do at the gallery.
那么其实爸爸要去画廊做什么?
Q4: Android 画廊怎么让第一张图在最左边
下面上代码,相关解释都放在代码里了。
1、建立一个新项目HelloGallery。
2、拷贝wallpaper_0.jpg…wallpaper_9.jpg 10个图片文件到res/drawable目录。
3、res/layout/main.xml文件的内容如下:
XML/HTML代码
?xml version="1.0" encoding="utf-8"?
framelayout android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="" android:id="@+id/FrameLayout01"
imageview android:layout_height="fill_parent" android:layout_width="fill_parent" android:id="@+id/ImageView01" android:src="@drawable/wallpaper_0"
/imageview
gallery android:layout_height="wrap_content" android:layout_width="fill_parent" xmlns:android="" android:id="@+id/Gallery01" android:spacing="5dp"
/gallery
/framelayout
其中我们使用FrameLayout来实现叠加效果,使用ImageView来显示大图,Gallery来展示画廊,android:spacing="5dp" 属性则是用来设置元素之间的间隔。
4、在res/values/目录中新建一个attrs.xml内容如下:
XML/HTML代码
?xml version="1.0" encoding="UTF-8"?
resources
declare -styleable="" name="HelloGallery"
attr name="android:galleryItemBackground"
/attr/declare
/resources
5、在MainHelloGallery.java中的内容如下:
Java代码
package android.basic.lesson13;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
public class MainHelloGallery extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//定义UI组件
final ImageView iv= (ImageView)findViewById(R.id.ImageView01);
Gallery g = (Gallery) findViewById(R.id.Gallery01);
//设置图片匹配器
g.setAdapter(new ImageAdapter(this));
//设置AdapterView点击监听器,Gallery是AdapterView的子类
g.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView? parent, View view,
int position, long id) {
//显示点击的是第几张图片
Toast.makeText(MainHelloGallery.this, "" + position,
Toast.LENGTH_LONG).show();
//设置背景部分的ImageView显示当前Item的图片
iv.setImageResource(((ImageView)view).getId());
}
});
}
//定义继承BaseAdapter的匹配器
public class ImageAdapter extends BaseAdapter {
//Item的修饰背景
int mGalleryItemBackground;
//上下文对象
private Context mContext;
//图片数组
private Integer[] mImageIds = { R.drawable.wallpaper_0,
R.drawable.wallpaper_1, R.drawable.wallpaper_2,
R.drawable.wallpaper_3, R.drawable.wallpaper_4,
R.drawable.wallpaper_5, R.drawable.wallpaper_6,
R.drawable.wallpaper_7, R.drawable.wallpaper_8,
R.drawable.wallpaper_9 };
//构造方法
public ImageAdapter(Context c){
mContext = c;
//读取styleable资源
TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();
}
//返回项目数量
@Override
public int getCount() {
return mImageIds.length;
}
//返回项目
@Override
public Object getItem(int position) {
return position;
}
//返回项目Id
@Override
public long getItemId(int position) {
return position;
}
//返回视图
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(mContext);
iv.setImageResource(mImageIds[position]);
//给生成的ImageView设置Id,不设置的话Id都是-1
iv.setId(mImageIds[position]);
iv.setLayoutParams(new Gallery.LayoutParams(120, 160));
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setBackgroundResource(mGalleryItemBackground);
return iv;
}
}
}





