• 安卓开发实现画廊效果


    画廊 使用Gallery表示,按水平方向显示内容,并且可以用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,可以响应事件显示信息。

    xml布局文件基本语法

    <Gallery

    属性列表

    />

    Gallery支持4中xml属性

    属性名称
    描述
    android:animationDuration
    设置布局变化时动画的转换所需的时间(毫秒级)。仅在动画开始时计时。该值必须是整数,比如:100。
    android:gravity
    指定在对象的X和Y轴上如何放置内容。指定一下常量中的一个或多个(使用 “|”分割)

    Constant
    Value
    Description
    top
    0×30
    紧靠容器顶端,不改变其大小
    bottom
    0×50
    紧靠容器底部,不改变其大小
    left
    0×03
    紧靠容器左侧,不改变其大小
    right
    0×05
    紧靠容器右侧,不改变其大小
    center_vertical
    0×10
    垂直居中,不改变其大小
    fill_vertical
    0×70
    垂直方向上拉伸至充满容器
    center_horizontal
    0×01
    水平居中,不改变其大小
    Fill_horizontal
    0×07
    水平方向上拉伸使其充满容器
    center
    0×11
    居中对齐,不改变其大小
    fill
    0×77
    在水平和垂直方向上拉伸,使其充满容器
    clip_vertical
    0×80
    垂直剪切(当对象边缘超出容器的时候,将上下边缘超出的部分剪切掉)
    clip_horizontal
    0×08
    水平剪切(当对象边缘超出容器的时候,将左右边缘超出的部分剪切掉)
    android:spacing
    (译者注:设置图片之间的间距)
    android:unselectedAlpha
    设置未选中的条目的透明度(Alpha)。该值必须是float类型,比如:“1.2”

     效果的具体实现过程

    layout

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7 
     8 
     9     <Gallery  
    10         android:id="@+id/gallery"  
    11         android:spacing="5px"          //设置列表项之间的间距为5像素
    12         android:unselectedAlpha="0.5"  //设置未被选中的列表项的透明度
    13         android:layout_width="match_parent"  
    14         android:layout_height="wrap_content" />
    15 
    16    
    17 </LinearLayout>


    Activity

     1 package xqx;
     2 
     3 import com.example.xqx_lianxi.R;
     4 
     5 import android.app.Activity;
     6 import android.content.res.TypedArray;
     7 import android.os.Bundle;
     8 import android.view.View;
     9 import android.view.ViewGroup;
    10 import android.widget.AdapterView;
    11 import android.widget.AdapterView.OnItemClickListener;
    12 import android.widget.BaseAdapter;
    13 import android.widget.Gallery;
    14 import android.widget.ImageView;
    15 import android.widget.Toast;
    16 
    17 public class MainGallery extends Activity{
    18      //设置画廊图片
    19     private int[] imageId = new int[] { R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
    20     @Override
    21     protected void onCreate(Bundle savedInstanceState) {
    22         // TODO Auto-generated method stub
    23         super.onCreate(savedInstanceState);
    24         setContentView(R.layout.main_gallery);
    25         //获取Gallery组件
    26         Gallery gallery = (Gallery) findViewById(R.id.gallery);
    27         BaseAdapter adapter = new BaseAdapter() {       
    28                //获取当前选项ID
    29                @Override  
    30                public long getItemId(int position) {  
    31                    return position;  
    32                }  
    33                //获取当前选项值
    34                @Override  
    35                public Object getItem(int position) {  
    36                    return position;  
    37                }  
    38                //获取数量
    39                @Override  
    40                public int getCount() {  
    41                    return imageId.length;  
    42                }
    43                
    44             @Override
    45             public View getView(int position, View convertView, ViewGroup parent) {  
    46                 ImageView imageview;   //声明ImageView的对象  
    47                 if (convertView == null) {  
    48                     imageview = new ImageView(MainGallery.this); //创建ImageView的对象  
    49                     imageview.setScaleType(ImageView.ScaleType.FIT_XY);  //设置缩放方式
    50                     imageview.setLayoutParams(new Gallery.LayoutParams(500, 400));  
    51                     TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);  
    52                     imageview.setBackgroundResource(typedArray.getResourceId(  
    53                             R.styleable.Gallery_android_galleryItemBackground,  
    54                             0));  
    55                     imageview.setPadding(5, 0, 5, 0);  //设置imageview的内边距
    56                 } 
    57                 else 
    58                 {  
    59                     imageview = (ImageView) convertView;  
    60                 }  
    61                 imageview.setImageResource(imageId[position]);  
    62                 return imageview;  
    63             }  
    64               
    65         };
    66            //将适配器与Gallery关联
    67            gallery.setAdapter(adapter);  
    68            gallery.setSelection(imageId.length / 2); //默认显示的图片的id  
    69            //画廊图片的点击事件
    70            gallery.setOnItemClickListener(new OnItemClickListener() {  
    71                @Override  
    72                public void onItemClick(AdapterView<?> parent, View view,  
    73                        int position, long id) {
    74                
    75                    Toast.makeText(MainGallery.this,  
    76                            "" + String.valueOf(position+1) + "张图片被选中",  
    77                            Toast.LENGTH_SHORT).show();  
    78                }  
    79            });  
    80     
    81 }
    82 }

    最后在res/values/string.xml中添加一段代码  ,这里对应activity中的51行

    1 <declare-styleable name="Gallery">  
    2         <attr name="android:galleryItemBackground" />  
    3     </declare-styleable>

    这样便完成了一个画廊的效果

    效果图:

       

    可以看到 一共有6张图片 默认显示第4张 

     gallery.setSelection(imageId.length / 2); //默认显示的图片的id

    作者:听着music睡

    出处:http://www.cnblogs.com/xqxacm/

    Android交流群:38197636

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Group Normalization
    Resnet小记
    Mxnet 查看模型params的网络结构
    ResNets和Inception的理解
    基础 | batchnorm原理及代码详解
    交叉熵代价函数原理
    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)
    机器学习 logistic分类
    ubuntu16.04 安装搜狗输入法
    工作5年半了,最近准备做一些工作的小结了
  • 原文地址:https://www.cnblogs.com/xqxacm/p/4163996.html
Copyright © 2020-2023  润新知