Android基础:ViewPage_Chelovek的博客-程序员ITS301_android viewpage

技术标签: java  android  android studio  Android  

ViewPage

介绍

        ViewPage主要是实现左右切换当前的view,实现滑动切换的效果。

实现代码

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 渲染布局
        LayoutInflater layoutInflater = getLayoutInflater().from(this);
        View view = layoutInflater.inflate(R.layout.unread_layout,null);
        View view2 = layoutInflater.inflate(R.layout.read_layout,null);
        View view3 = layoutInflater.inflate(R.layout.read_layout,null);
        List<View> viewList = new ArrayList<>();
        viewList.add(view);
        viewList.add(view2);
        viewList.add(view3);

        ViewPager viewPager = findViewById(R.id.view_page1);
        MyAdapter myAdapter = new MyAdapter(viewList);
        viewPager.setAdapter(myAdapter);

    }
}
import java.util.List;

public class MyAdapter extends PagerAdapter {
    
    private List<View> viewList;

    public MyAdapter(List<View> viewList){
    
        this.viewList = viewList;
    }
    @Override
    public int getCount() {
    
        return viewList == null ? 0 : viewList.size();
    }


    /**
     * 将给定位置的View 添加到ViewGroup中,并显示出来
     * 返回一个代表新页面的Object(key),通常都是返回view本身就行
     *
     * @param container container
     * @param position position
     * @return view
     */
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
    
        container.addView(viewList.get(position),0);
        return viewList.get(position);
    }

    /**
     * 判断instantiateItem()方法返回的key是否跟一个页面视图是否相同
     * @param view
     * @param object
     * @return
     */
    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    
        return view == object;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    
        container.removeView(viewList.get(position));
    }
}

<!-- activity_main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <androidx.viewpager.widget.ViewPager
        android:id="@+id/view_page1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>
<!-- unread_layout.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:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="未阅读信息"
        android:textSize="36sp"
        />

</LinearLayout>
<!-- read_layout.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:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="已阅读信息"
        android:textSize="36sp"
        />

</LinearLayout>
<!-- all_layout.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:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="全部信息"
        android:textSize="36sp"
        />

</LinearLayout>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42022380/article/details/123321247

智能推荐

QtWidgets Module&#39;s Classes_weixin_33725126的博客-程序员ITS301

Qt Widgets C++ ClassesThe Qt Widgets module extends Qt GUI with C++ widget functionality. More...API ReferenceThese are links to the API reference materials.Qt Widgets C...

php dom类库,php解析html类库simple_html_dom.md_TTTTTTT-ll的博客-程序员ITS301

```php解析器不仅仅只是帮助我们验证html文档;更能解析不符合W3C标准的html文档。它使用了类似jQuery的元素选择器,通过元素的id,class,tag等等来查找定位;同时还提供添加、删除、修改文档树的功能。当然,这样一款强大的html Dom解析器也不是尽善尽美;在使用的过程中需要十分小心内存消耗的情况。不过,不要担心;本文中,笔者在最后会为各位介绍如何避免消耗过多的内存。开始使用...

python编程游戏手机版_python编程app下载_python编程安卓版下载v1.1.6_玩游戏网_weixin_39636226的博客-程序员ITS301

《python编程》App是面向于Python工程师打造的软件,可以随时在App中学习海量的知识,零基础入门轻松学习,还可以在线写代码等,可以让用户边学边练,功能无比的强大,使用简单,不需要付费。软件特色提供可以随时编辑练习必要的Python语言的Python编译器。推荐最新的Python文章。理解更多的Python内容,更好地理解Python编程语言;根据Python教程列表,您可以查看教程的章...

【MFC笔记】GridCtrl表格控件消息响应处理_yexian1991的博客-程序员ITS301

1、目标,单击不同的列,显示不同的内容。2、在一个对话框中加一个custom ctrl的控件,控件里面加GridCtrl表格,点击的是表格里面的格子。3、查看GridCtrl.cpp中有消息,如下。比如左键起来的时候,会向父窗口发一个WM_NOTIFY类型的消息,消息中包含的行列和消息类型的值。4、在父窗口中截取消息进行处理,类向导,虚函数OnNotify();BOO...

如何实现图片的动态切换(间隔几秒就切换下一张)_huyandong10的博客-程序员ITS301

如何实现图片的动态切换(间隔几秒就切换下一张)  (1)html代码 将这段js代码放在要显示图片的位置,例如:放在了td中:     td>        script type="text/javascript"> var focus_width=200var focus_height=300var text_height=30var swf_height

随便推点

基于A33下linux内核的GDB+KGDB内核调试环境搭建_小段孩-慎独的博客-程序员ITS301_linux gdb kgdbwait

基于A33的GDB+KGDB内核调试环境搭建平台芯片:全志A33系统:Tina3.5内核:linux3.4通信方式:串口修改内核配置文件在内核配置文件.config中,打开如下选项:配置项开关备注CONFIG_KGDBy加入KGDB支持CONFIG_KGDB_SERIAL_CONSOLEy使用KGDB通过串口与主机通信CONFIG_DE...

MongoSocketReadException: Exception receiving message 问题解决方案_souldomain的博客-程序员ITS301_exception receiving message

问题描述通过系统访问MongoDB数据库,经过一段时间直接再次访问数据时,出现异常报错019-10-23 10:49:26.796 ERROR 11368 --- [nio-8081-exec-9] c.a.d.m.advice.** : Exception receiving message; nested exception is com.mongodb.MongoSocketReadE...

模数转换实验中断方式c语言,嵌入式系统实验—通用异步收发器(UART)实验_阿伊谈的博客-程序员ITS301

实验五:通用异步收发器(UART)实验一、实验目的1、掌握UART外设的操作原理和编程。2、学习使用UART进行多机通讯。二、实验设备1、硬件:PC机一台 、Mini2440 ARM实验板一套 J-link仿真器一套2、软件:WindowsXP 系统,Keil uVision4.0 集成开发环境三、实验内容(1)使用C语言编写 UART基本收发数据程序,进行 2个实验板之间的数据收发测试。(2)用...

Windows 10(64位)下VC++6.0显示行数(详细演示,百分百成功版)_qq_15029743的博客-程序员ITS301_vc++6.0怎么显示行数

问题:VC++6.0显示行数(详细演示版)按此步骤可解决插件安装过程中常见错误:Unable to register this add-in because its DllRegisterServer returns an error首先要下载显示行数的插件:点击下载压缩包内包含两个文件:第一步:将VC6LineNumberAddin.dll文件复制到安装目录下(盘符根据安...

推荐文章

热门文章

相关标签