StackView是Android 3.0新增的控件,可以实现多个View在竖直方向堆叠摆放。属于AdapterView的一个子类,本人觉得没有多大用处,其一堆叠的距离和方向不能控制;其二动画设置也不起作用,也可能是由于本人研究不够仔细吧,望知情者予以告知。
效果图
具体操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <?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">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="next" android:onClick="next" />
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="previous" android:onClick="previous" />
<StackView android:id="@+id/stackview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:loopViews="true" />
</LinearLayout>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| private Integer[] ids={R.mipmap.img1,R.mipmap.img2,R.mipmap.img3,R.mipmap.img4,R.mipmap.img5};
StackView stackView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_stackview);
stackView= (StackView) findViewById(R.id.stackview);
stackView.setInAnimation(this,R.animator.scale); stackView.setAdapter(new StackViewAdapter()); }
public void next(View v){ stackView.showNext(); }
public void previous(View v){ stackView.showPrevious(); }
class StackViewAdapter extends BaseAdapter{
@Override public int getCount() { return ids.length; }
@Override public Integer getItem(int position) { return ids[position]; }
@Override public long getItemId(int position) { return position; }
@Override public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder viewHolder=null; if(convertView==null){ convertView=View.inflate(StackViewActivity.this,R.layout.item_stack,null); viewHolder=new MyViewHolder(); viewHolder.iv= (ImageView) convertView.findViewById(R.id.iv); convertView.setTag(viewHolder);
}else{ viewHolder= (MyViewHolder) convertView.getTag(); } viewHolder.iv.setImageResource(ids[position]); return convertView; } }
class MyViewHolder { public ImageView iv;
}
|