高级控件之Scrollview ( 滑动屏幕 ) 与 Imageview (滑动屏幕 切换图片)
ScrollView 的xml布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context="com.example.bobo.gaojikongjianapplication.MainActivity">
//ScorllView 竖屏滑动
// <!---水平滚动-->
<HorizontalScrollView
//scorllciew 中只能嵌套一个布局方式,但是其嵌套的布局方式可以嵌套多种布局方式
android:layout_width="match_parent"
android:layout_height="50dp"
android:scrollbars="none"//设置滚动时滚动条是否显示
android:id="@+id/hs">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rg1"
android:orientation="horizontal"> //按钮横屏显示
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null" //不显示按钮周边 只显示文字
android:gravity="center"
android:checked="true"
android:id="@+id/rb1"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb2"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb3"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb4"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb5"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb6"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb7"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb8"
android:textColor="@color/rdutton"/>
<RadioButton
android:layout_width="50dp"
android:layout_height="wrap_content"
android:text="烟台"
android:button="@null"
android:gravity="center"
android:id="@+id/rb9"
android:textColor="@color/rdutton"/>
</RadioGroup>
</HorizontalScrollView>
//Imageview xml布局方式
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/vp1"
android:background="#14d0da"//设置背景 让图片与背景对比更明显
android:layout_below="@+id/hs">
</android.support.v4.view.ViewPager>
</RelativeLayout>
布局界面如下
Activity 书写
public class MainActivity extends AppCompatActivity {
private RadioGroup rg;
private ViewPager vp;
private List<ImageView> m;
private MyViewPagerAdapter mp;
private HorizontalScrollView hs;
private RadioButton rb1,rb2,rb3,rb4,rb5,rb6,rb7,rb8,rb9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rg=(RadioGroup)findViewById(R.id.rg1);
rb1=(RadioButton)findViewById(R.id.rb1);
rb2=(RadioButton)findViewById(R.id.rb2);
rb3=(RadioButton)findViewById(R.id.rb3);
rb4=(RadioButton)findViewById(R.id.rb4);
rb5=(RadioButton)findViewById(R.id.rb5);
rb6=(RadioButton)findViewById(R.id.rb6);
rb7=(RadioButton)findViewById(R.id.rb7);
rb8=(RadioButton)findViewById(R.id.rb8);
rb9=(RadioButton)findViewById(R.id.rb9);
vp=(ViewPager)findViewById(R.id.vp1);
//hs=(HorizontalScrollView)findViewById(R.id.hs); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb1:
Toast.makeText(getBaseContext(), rb1.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(0);//当点击了按钮rb1时切换到第一张图片
break;
case R.id.rb2:
Toast.makeText(getBaseContext(), rb2.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(1);
break;
case R.id.rb3:
Toast.makeText(getBaseContext(), rb3.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(2);
break;
case R.id.rb4:
Toast.makeText(getBaseContext(), rb4.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(3);
break;
case R.id.rb5:
Toast.makeText(getBaseContext(), rb5.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(4);break;
case R.id.rb6:
Toast.makeText(getBaseContext(), rb6.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(5);
break;
case R.id.rb7:
Toast.makeText(getBaseContext(), rb7.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(6);
break;
case R.id.rb8:
Toast.makeText(getBaseContext(), rb8.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(7);break;
case R.id.rb9:
Toast.makeText(getBaseContext(), rb9.getText(), Toast.LENGTH_SHORT).show();
vp.setCurrentItem(8);break;
}
}
});
vpInit();
}
public void vpInit(){
//往viepager中存放图片
m=new ArrayList<>();
ImageView iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
m.add(iv);
//mp=new MyViewPagerAdapter(m);
vp.setAdapter(new MyViewPagerAdapter(m));//适配器与图片关联起来
vp.setCurrentItem(0);//默认选中0
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
//该类方法实现当切换图片时,按钮同时切换
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override
public void onPageSelected(int position) {
RadioButton radioButton= (RadioButton) rg.getChildAt(position);
radioButton.setChecked(true);
} @Override
public void onPageScrollStateChanged(int state) { }
});
}
}
viewpager适配器的书写代码
public class MyViewPagerAdapter extends PagerAdapter { private List<ImageView> imageViewList;//建一个imageview类型的list链表 public MyViewPagerAdapter(List<ImageView> imageViewList) {
this.imageViewList = imageViewList;
}
@Override
public int getCount() {
return imageViewList.size();//返回图片数量
} @Override
public boolean isViewFromObject(View view, Object object) {
return view==object;//返回这是一个view值
} @Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(imageViewList.get(position));
return imageViewList.get(position);//增加图片,position图片数量 } @Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(imageViewList.get(position));//删除图片 }
}
高级控件之Scrollview ( 滑动屏幕 ) 与 Imageview (滑动屏幕 切换图片)的更多相关文章
- Android高级控件--AdapterView与Adapter
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...
- Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现
Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用L ...
- UGUI核心元素、基本控件、复合控件和高级控件
UGUI的核心元素: Anchor(锚点):每个控件都有一个Anchor属性,控件的4个顶点,分别与Anchor的4个点保持不变的距离,不受屏幕分辨率变化的影响. 系统默认设置控件的Anchor位置在 ...
- Android 高级控件(七)——RecyclerView的方方面面
Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...
- Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例
Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表, ...
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现
Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...
随机推荐
- Hadoop搭建全程
修改配置文件 cd /etc/sysconfig/network-scripts #进入网络配置目录 dir ifcfg* #找到网卡配置文件 ifc ...
- OpenStack中的rabbitmq的配置方法
OpenStack中的rabbitmq的配置方法 author:headsen chen 2017-10-11 17:24:58 个人原创,允许转载,转载请注明作者,出处,否则依法追究法律责任 ...
- ReactNative环境配置的坑
我用的是windows开发android,mac的可以绕道了. 1.android studio及Android SDK的安装 现在需要的Android版本及对应的tool 2.真机运行要配置对and ...
- 【Ansible】 基于SSH的远程管理工具
[Ansible] 参考文档:[http://www.ansible.com.cn/docs/intro.html] 和ansible类似的工具还有saltstack,puppet,sshpass等, ...
- Algorithm --> 矩阵链乘法
动态规划--矩阵链乘法 1.矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义.一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C. #include ...
- 常见的链表排序(Java版)
上篇博客中讲解了九大内部排序算法,部分算法还提供了代码实现,但是那些代码实现都是基于数组进行排序的,本篇博客就以链表排序实现几种常见的排序算法,以飨读者. 快速排序的链表实现 算法思想:对于一个链表, ...
- oracle--dba和表的备份与恢复
数据库管理员 每个oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责,那么一个数据库管理员的主 ...
- React Native 轻松集成分享功能(Android 篇)
关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...
- Leetcode 15——3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...
- beta冲刺总结附(分工)-咸鱼
冲刺链接 分工细则: 分配比例:前端:后台数据库+代码:服务器配置:测试=3:3:2:2 工作量权重比: 前端 后台 服务器 测试 翁陈华 0.9 0.1 0 0 黄紫仪 0.1 0.8 0 0 ...