Android:仿微信开场切换界面
这实例很多人仿做,好实例还是不容错过!最重要是素材容易拿~
效果:
默认3页面的切换,最后一个页面带按钮,点击进入另外一个页面

思路:
1、准备5个布局页面,1个为主函数布局页面,3个为切换的页面(其一带按钮),1个为按钮点击进入的页面(这个需要Activity)。
2、用适配器绑定相应的view,设置适配器
3、制作点点,设置监听事件控制点点
4、设置按钮的点击事件
主要代码:


主布局
<?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.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
</android.support.v4.view.ViewPager>
</LinearLayout>
有按钮的切换页布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/whatsnew_page01"
> <Button
android:id="@+id/comein"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="进入微信"
android:textColor="#ffffff"
android:layout_centerInParent="true"
android:background="@drawable/btn_selector"
android:onClick="startbutton"
/> </RelativeLayout>
程序代码:
public class MainActivity extends Activity {
private ViewPager viewpager;
private ArrayList<View>views ;
//点点
private ViewGroup listgroup;
private ImageView imageview;
private ImageView[] imageviewArr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置无标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.start);
//内容
viewpager = (ViewPager) findViewById(R.id.viewpager);
views = new ArrayList<View>();
//把view加入数组
LayoutInflater lf = getLayoutInflater();
View v1 =lf.inflate(R.layout.w1, null);
View v2 =lf.inflate(R.layout.w2, null);
View v3 =lf.inflate(R.layout.w3, null);
views.add(v1);
views.add(v2);
views.add(v3);
/*
* 把点加入ViewGroup
* */
listgroup = (ViewGroup) findViewById(R.id.listgroup);
//有多少个界面数组就包含多少个点
imageviewArr = new ImageView[views.size()];
//生成每个点
for(int i=0;i<views.size();i++){
imageview = new ImageView(MainActivity.this);
//设置点的宽和高
imageview.setLayoutParams(new LayoutParams(9,9));
//设置点padding(左,上,右,下)
imageview.setPadding(20, 0, 20, 0);
//放入数组
imageviewArr[i]=imageview;
//设置第一个点样式为选中状态,其他为默认状态
if(i==0){
imageview.setBackgroundResource(R.drawable.page_indicator_focused);
}else{
imageview.setBackgroundResource(R.drawable.page_indicator_unfocused);
}
listgroup.addView(imageviewArr[i]);
}
//绑定适配器
viewpager.setAdapter(new ViewPagerAdapter());
//设置监听器,切换时,点样式同步切换
viewpager.setOnPageChangeListener(new listChangerListener());
}
/*
* viewpager的适配器
* */
public class ViewPagerAdapter extends PagerAdapter{
//实现PagerAdapter至少要覆盖以下方法
@Override
//返回窗体界面数
public int getCount() {
// TODO Auto-generated method stub
return views.size();
}
@Override
//判断对象是否生成界面
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
//销毁一个界面
public void destroyItem(View container, int position, Object object) {
// TODO Auto-generated method stub
((ViewPager)container).removeView(views.get(position));
}
@Override
//初始化界面
public Object instantiateItem(View container, int position) {
// TODO Auto-generated method stub
((ViewPager)container).addView(views.get(position));
return views.get(position);
}
}
/*
* viewpager的监听器
* */
public class listChangerListener implements OnPageChangeListener{
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
for(int i=0;i<imageviewArr.length;i++){
//当前索引为arg0,循环所有点,如果i为当前索引。则i样式为选中状态
imageviewArr[arg0].setBackgroundResource(R.drawable.page_indicator_focused);
if(arg0 !=i){
//否则样式为未选中状态
imageviewArr[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
}
}
}
}
//点击按钮打开新页面
public void startbutton(View v) {
Intent intent = new Intent(MainActivity.this, HomeActivity.class);
startActivity(intent);
MainActivity.this.finish();
}
}
Android:仿微信开场切换界面的更多相关文章
- 转-Android仿微信气泡聊天界面设计
微信的气泡聊天是仿iPhone自带短信而设计出来的,不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo,给大家分享一下!效果图如下: 气泡聊天最终要的是素材,要用到9.png文件的素材,这样气 ...
- Android仿微信气泡聊天界面设计
微信的气泡聊天是仿iPhone自带短信而设计出来的,不过感觉还不错可以尝试一下仿着微信的气泡聊天做一个Demo,给大家分享一下!效果图如下: 气泡聊天最终要的是素材,要用到9.png文件的素材,这样气 ...
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...
- Android 仿微信小视频录制
Android 仿微信小视频录制 WechatShortVideo和WechatShortVideo文章
- 实现了在android实现左右滑动切换界面的效果
这是实现了在android实现左右滑动切换界面的效果,该效果的源码下载,请到源码天堂下载吧,喜欢的朋友可以研究一下. 布局文件 <?xml version="1.0" enc ...
- Android仿微信界面
效果图 原理介绍 1.先绘制一个颜色(例如:粉红) 2.设置Mode=DST_IN 3.绘制我们这个可爱的小机器人 回答我,显示什么,是不是显示交集,交集是什么?交集是我们的小机器人的非透明区域,也就 ...
- android仿微信红包动画、Kotlin综合应用、Xposed模块、炫酷下拉视觉、UC浏览器滑动动画等源码
Android精选源码 仿微信打开红包旋转动画 使用Kotlin编写的Android应用,内容你想象不到 Android手机上的免Root Android系统日志Viewer 一个能让微信 Mater ...
- Android仿微信拍摄短视频
近期做项目需要添加上传短视频功能,功能设置为类似于微信,点击开始拍摄,设置最长拍摄时间,经过研究最终实现了这个功能,下面就和大家分享一下,希望对你有帮助. 1.视频录制自定义控件: /** * 视频播 ...
- jquery 仿手机屏幕切换界面效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 我对c++对象内存布局的理解
引言 结合网上的一些资料,通过自己的一番摸索,得出了一点个人见解.现在写下来,希望与各位同学共同探讨,共同进步. 以下所有代码均是在VS2012下测试. 一个普通的基类 1: #include < ...
- Traveller项目介绍
Traveller,翻译为旅行家,是我用来实践最佳web技术的项目,主题是一个给旅行爱好者提供旅行信息的网站. 目标是组合现最流行的web技术,实现符合中国用户使用习惯的网站. 相关网址 Git:ht ...
- 手机网站中 限制图片宽度 JS图片等比例缩放
<script type="text/javascript"> $(function () { var w = $(".content-co").w ...
- DirectSound学习(二)--流式缓冲区
使用流式缓冲方式播放波形音频文件比较复杂,主要原因是在只有一个缓冲区提供给用户的前提下,这个缓冲区在提供给声卡播放数据的同是还需要用户不断的定时向其中写入数据.要注意从缓冲区这时是一个环形缓冲区,声音 ...
- C#各版本特性
C# 2.0 泛型,可空类型,匿名方法,更方便的委托,迭代器,分布类型,静态类,包含不同访问修饰符的属性的取值和赋值方法,命名空间别名,pragma指令,固定大小的缓冲器. C# 3.0 LINQ,自 ...
- 静态的html页面想要设置使用浏览器缓存
设置html页面缓存方法: 静态的html页面想要设置使用缓存: 通过HTTP的META设置expires和cache-control code 1. <meta http-equiv=&qu ...
- Sublime字体设置
{"font_face": "Courier New","font_options":["subpixel_antialias&q ...
- [Interview][CodingExam]
這次去Interview, 其中有一個公司 把我列為 2/25的考慮對象, 在Final 的 1/2, 我被刷掉了. 因為第一輪的程式,我稍微google了一下,參考了既有的寫法. 即使第二輪我用完全 ...
- webpack减少打包后文件体积的几种方法
webpack 把我们所有的文件都打包成一个 JS 文件,这样即使你是小项目,打包后的文件也会非常大.下面就来讲下如何从多个方面进行优化. 去除不必要的插件 刚开始用 webpack 的时候,开发环境 ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...