Android studio高级控件之画廊视图、图像切换器、网格视图、列表
2019-03-21 21:51
435 查看
画廊视图
.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" android:gravity="center_horizontal"> <ImageSwitcher android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ImageSwitcher1" android:layout_weight="2" android:paddingBottom="5dp" android:paddingTop="10dp"/> <Gallery android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/gallery1" android:spacing="5dp" android:layout_weight="1" android:unselectedAlpha="0.6"> </Gallery> </LinearLayout>
.java文件:
package com.example.first; import android.content.res.TypedArray; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.ImageSwitcher; import android.widget.ViewSwitcher; public class MainActivity extends AppCompatActivity { private int[] imageId=new int[]{ R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04,R.drawable.img05, R.drawable.img06,R.drawable.img07,R.drawable.img08,R.drawable.img09,R.drawable.img10 }; private ImageSwitcher imageSwitcher;//声明一个图像切换器对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Gallery gallery=(Gallery)findViewById(R.id.gallery1);//获取Gallery组件 imageSwitcher=(ImageSwitcher)findViewById(R.id.ImageSwitcher1);//获取图像切换器 //设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置淡入动画 imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置淡出动画 imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { ImageView imageView=new ImageView(MainActivity.this);//实例化一个ImageView类的对象 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//设置保持纵横比居中缩放图像 imageView.setLayoutParams(new ImageSwitcher.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return imageView;//返回imageview对象 } }); //使用baseAdapter指定要显示的内容 BaseAdapter adapter=new BaseAdapter() { @Override public View getView(int position,View converView,ViewGroup parent){ ImageView imageView;//声明ImageView对象 if(converView==null){ imageView=new ImageView(MainActivity.this);//实例化ImageView的对象 imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置缩放方式 imageView.setLayoutParams(new Gallery.LayoutParams(110,83)); TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery1); imageView.setBackgroundResource(typedArray.getResourceId( R.styleable.Gallery1_android_galleryItemBackground,0)); imageView.setPadding(5,0,5,0);//设置imageView的内边距 } else{ imageView=(ImageView) converView; } imageView.setImageResource(imageId[position]);//为ImageView设置要显示的图片 return imageView;//返回Imageview } //获得数量 public int getCount() { return imageId.length; } @Override//获得当前选项 public Object getItem(int position) { return position; } @Override//获得当前选项的ID public long getItemId(int position) { return position; } }; gallery.setAdapter(adapter);//将适配器与Gallery关联 gallery.setSelection(imageId.length/2);//让中间的图片选中 gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { imageSwitcher.setImageResource(imageId[position]);//显示选中的图片 } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }
.values文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Gallery1"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
效果图:
注意里面有一段代码为:
不能直接使用,因为Java删除了一段代码,代码如下:(了解即可)
public ImageAdapter(Context c) { mContext = c; TypedArray a = obtainStyledAttributes(android.R.styleable.Theme); mGalleryItemBackground = a.getResourceId( android.R.styleable.Theme_galleryItemBackground, 0); a.recycle(); }
所以在Android studio中了不能直接使用styleable,想使用就需要自己做一个styleable,方法就是建立values的文件(我的名字叫styleable.xml),上面代码已经给出.(文件位置如下图)
图像切换器
.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="horizontal" android:gravity="center"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="上一张"/> <ImageSwitcher android:layout_width="600px" android:layout_height="500px" android:id="@+id/ImageSwitcher1" android:layout_gravity="center"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下一张"/> </LinearLayout>
.java 文件:
package com.example.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.ImageView; import android.widget.ImageSwitcher; import a 20000 ndroid.widget.ViewSwitcher; public class MainActivity extends AppCompatActivity { private int[] imageId=new int[]{ R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04,R.drawable.img05, R.drawable.img06,R.drawable.img07,R.drawable.img08,R.drawable.img09,R.drawable.img10 };//声明并初始化一个保存要显示图像ID的数组 private int index=0;//当前显示图像的索引 private ImageSwitcher imageSwitcher;//声明一个图像切换器对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageSwitcher=(ImageSwitcher)findViewById(R.id.ImageSwitcher1);//获取图像切换器 //设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//设置淡入动画 imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//设置淡出动画 imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { ImageView imageView=new ImageView(MainActivity.this);//实例化一个ImageView类的对象 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);//设置保持纵横比居中缩放图像 imageView.setLayoutParams(new ImageSwitcher.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); return imageView;//返回imageview对象 } }); imageSwitcher.setImageResource(imageId[index]);//显示默认的图片 Button up = (Button) findViewById(R.id.button1);//获取上一张图片 Button down = (Button) findViewById(R.id.button2);//获取下一张图片 up.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(index>0){ index--; } else { index=imageId.length-1; } imageSwitcher.setImageResource(imageId[index]);//显示当前的图片 } }); down.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(index<imageId.length-1){ index++; } else{ index=0; } imageSwitcher.setImageResource(imageId[index]);//显示当前的图片 } }); } }
网格视图
main.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"> <GridView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/GridView1" android:stretchMode="columnWidth" android:numColumns="4"> </GridView> </LinearLayout>
items.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:layout_width="300px" android:layout_height="200px" android:id="@+id/ImageView_id" android:scaleType="fitCenter" android:paddingLeft="10px" android:layout_gravity="center"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/TextView_id" android:padding="5px" android:layout_gravity="center"/> </LinearLayout>
.java文件:
package com.example.listview1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.GridView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private int[] imageId=new int[]{R.drawable.img01,R.drawable.img02,R.drawable.img03, R.drawable.img04,R.drawable.img05,R.drawable.img06,R.drawable.img07, R.drawable.img08,R.drawable.img09,R.drawable.img10};//定义并初始化存放图片的数组 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gridView=(GridView) findViewById(R.id.GridView1);//获取GridView组件 String[] titleId=new String[]{"1","2","3","4","5","6","7","8","9","10"};//定义并初始化说明文字的数组 List<Map<String, Object>> listItems=new ArrayList<Map<String, Object>>();//创建一个list集合 for(int i=0;i<imageId.length;i++){ Map<String, Object> map= new HashMap<String, Object>(); map.put("ImageView_id",imageId[i]); map.put("TextView_id",titleId[i]); listItems.add(map);//将存入map的数据存到List中 } //创建适配器SimpleAdapter SimpleAdapter adapter=new SimpleAdapter(this,listItems,R.layout.items, new String[]{"ImageView_id","TextView_id"}, new int[]{R.id.ImageView_id,R.id.TextView_id});//适配items.xml布局 gridView.setAdapter(adapter);//将适配器与GridView相关联 } }
列表
在values下面新建arrays.xml
main.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="horizontal"> <TextView android:id="@+id/TextView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请选择身份类型:"/> <Spinner android:id="@+id/Spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:entries="@array/info"></Spinner> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button1" android:text="提交"/> </LinearLayout>
arrays.xml代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="info"> <item>身份证</item> <item>学生证</item> <item>老年证</item> <item>港台证</item> <item>工作证</item> <item>军人证</item> <item>其他</item> </string-array> </resources>
.java代码:
package com.example.first; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button)findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "提交成功", Toast.LENGTH_SHORT).show(); } }); } }
效果为:
相关文章推荐
- 高级控件之分组列表视图(ExpandableListView)
- 高级控件之画廊视图(Gallery)
- 2.4.11 网格视图和图像切换器
- 高级控件之列表视图(ListView)
- android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)
- 高级控件之网格视图(GridView)
- 列表_下拉列表_可扩展的列表_滚动_画廊_图像切换_网格_标签_惰性装载
- Android 高级UI设计笔记13:Gallery(画廊控件)之 循环显示图像
- VC MFC列表视图(CListCtrl)控件
- 鸡啄米vc++2010系列28(列表视图控件List Control 下)
- VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)
- Android中利用ListView和GridView实现列表视图和网格(图标)视图的相互切换显示
- 安卓高级组件------网格视图
- MFC之列表视图控件List Control
- 控件之List View (列表视图)
- UIKit框架-高级视图-UITableView-表格控件
- winform 单选框, 图像控件,图像列表,状态栏,定时器,绘图
- 网格控件群组的高级使用
- Qt qml listview 列表视图控件(下拉刷新、上拉分页、滚动轴)
- IOS之高级控件-表视图