ViewFlipper和ViewPager

在F1C100s上跑GBA游戏:手把手教你用Buildroot配置SDL和移植gpsp模拟器 本文详细介绍了在全志F1C100s开发板上配置Buildroot、移植SDL库和gpsp模拟器的完整流程,帮助开发者实现在ARM9平台上流畅运行GBA游戏。内容涵盖环境配置、交叉编译、常见问题解决及性能优化技巧,特别针对'段错误'和'无声音'等典型问题提供实用解决方案。 阅读详情

1、ViewFlipper

1)View切换的控件—ViewFlipper介绍

ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。

查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。

setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。

setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。

showNext:调用该方法可以显示FrameLayout里面的下一个View。

showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。

查看ViewFlipper的源码可以看到,ViewFlipper主要用来实现View的自动切换。该类提供了如下几个主要的方法。

setFilpInterval:设置View切换的时间间隔。参数为毫秒。

startFlipping:开始进行View的切换,时间间隔是上述方法设置的间隔数。切换会循环进行。

stopFlipping:停止View切换。

setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。

一般情况下,我们都会使用ViewFilpper类实现View的切换,而不使用它的父类ViewAnimator类。

2)实现滑动—GestureDetector介绍

如果想要实现滑动翻页的效果,就要了解另外一个类:android.view.GestureDetector类。GestureDetector类中可以用来检测各种手势事件。该类有两个回调接口,分别用来通知具体的事件。

GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于PC上面的鼠标的双击事件。

GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有六个回调方法,具体的可以查看API。这里想要实现滑动的判断,就需要用到其中的onFling()方法。

3)具体的实现

下面的代码片段详细说明了如何实现滑动翻页。

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/b" />
         <ImageView
            android:id="@+id/imageView2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/c" />
          <ImageView
            android:id="@+id/imageView3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/d" />
          <ImageView
            android:id="@+id/imageView4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/f" />
         <ImageView
            android:id="@+id/imageView5"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:src="@drawable/g" />
    </ViewFlipper>

</LinearLayout>
复制代码
复制代码
public class ViewFlipperActivity extends Activity implements OnTouchListener, android.view.GestureDetector.OnGestureListener {
    private ViewFlipper flipper;
    GestureDetector mGestureDetector;  
    private int mCurrentLayoutState;  
    private static final int FLING_MIN_DISTANCE = 80;  
    private static final int FLING_MIN_VELOCITY = 150;  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewflipper);
        
        flipper=(ViewFlipper) this.findViewById(R.id.viewFlipper1);
         //注册一个用于手势识别的类  
        mGestureDetector = new GestureDetector(this);  
        //给mFlipper设置一个listener  
        flipper.setOnTouchListener(this);  
        mCurrentLayoutState = 0;  
        //允许长按住ViewFlipper,这样才能识别拖动等手势  
        flipper.setLongClickable(true);  
        
    }
    /**  
     * 此方法在本例中未用到,可以指定跳转到某个页面  
     * @param switchTo  
     */  
    public void switchLayoutStateTo(int switchTo) {  
        while (mCurrentLayoutState != switchTo)   {  
            if (mCurrentLayoutState > switchTo) {  
                mCurrentLayoutState--;  
                flipper.setInAnimation(inFromLeftAnimation());  
                flipper.setOutAnimation(outToRightAnimation());  
                flipper.showPrevious();  
            } else {  
                mCurrentLayoutState++;  
                flipper.setInAnimation(inFromRightAnimation());  
                flipper.setOutAnimation(outToLeftAnimation());  
                flipper.showNext();  
            }  
   
        }  
 
    } 
    /**  
     * 定义从右侧进入的动画效果  
     * @return  
     */  
    protected Animation inFromRightAnimation() {  
        Animation inFromRight = new TranslateAnimation(  
                Animation.RELATIVE_TO_PARENT, +1.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f);  
        inFromRight.setDuration(200);  
        inFromRight.setInterpolator(new AccelerateInterpolator());  
        return inFromRight;  
    }  
   
    /**  
     * 定义从左侧退出的动画效果  
     * @return  
     */  
    protected Animation outToLeftAnimation() {  
        Animation outtoLeft = new TranslateAnimation(  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, -1.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f);  
        outtoLeft.setDuration(200);  
        outtoLeft.setInterpolator(new AccelerateInterpolator());  
        return outtoLeft;  
    }  
   
    /**  
     * 定义从左侧进入的动画效果  
     * @return  
     */  
    protected Animation inFromLeftAnimation() {  
        Animation inFromLeft = new TranslateAnimation(  
                Animation.RELATIVE_TO_PARENT, -1.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f);  
        inFromLeft.setDuration(200);  
        inFromLeft.setInterpolator(new AccelerateInterpolator());  
        return inFromLeft;  
    }  
    
    /**  
     * 定义从右侧退出时的动画效果  
     * @return  
     */  
    protected Animation outToRightAnimation() {  
        Animation outtoRight = new TranslateAnimation(  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, +1.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f,  
                Animation.RELATIVE_TO_PARENT, 0.0f);  
        outtoRight.setDuration(200);  
        outtoRight.setInterpolator(new AccelerateInterpolator());  
        return outtoRight;  
    }  
    
    public boolean onDown(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }
    /*  
     * 用户按下触摸屏、快速移动后松开即触发这个事件  
     * e1:第1个ACTION_DOWN MotionEvent  
     * e2:最后一个ACTION_MOVE MotionEvent  
     * velocityX:X轴上的移动速度,像素/秒  
     * velocityY:Y轴上的移动速度,像素/秒  
     * 触发条件 :  
     * X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒  
     */
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
            float velocityY) {
         if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE  
                    && Math.abs(velocityX) > FLING_MIN_VELOCITY) {  
                // 当像左侧滑动的时候  
                //设置View进入屏幕时候使用的动画  
                flipper.setInAnimation(inFromRightAnimation());  
                //设置View退出屏幕时候使用的动画  
                flipper.setOutAnimation(outToLeftAnimation());  
                flipper.showNext();  
            } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE  
                    && Math.abs(velocityX) > FLING_MIN_VELOCITY) {  
                // 当像右侧滑动的时候  
                flipper.setInAnimation(inFromLeftAnimation());  
                flipper.setOutAnimation(outToRightAnimation());  
                flipper.showPrevious();  
            }  
            return false;  
    }
    public void onLongPress(MotionEvent e) {
        // TODO Auto-generated method stub
        
    }
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        // TODO Auto-generated method stub
        return false;
    }
    public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub
        
    }
    public boolean onSingleTapUp(MotionEvent e) {
        // TODO Auto-generated method stub
        return false;
    }
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
          // 一定要将触屏事件交给手势识别类去处理(自己处理会很麻烦的)  
        return mGestureDetector.onTouchEvent(event);  
    }
    
    
}
复制代码

from:http://blog.youkuaiyun.com/arui319


2、ViewPager

说明:

ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“android-support-v4.jar”

主布局文件

main.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/pagertitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top" />
    </android.support.v4.view.ViewPager>

</LinearLayout>
复制代码

其中ViewPager为多页显示控件,PagerTitleStrip用于显示当前页面的标题

主窗口代码:

PagerTitleDemoActivity.java

复制代码
package com.ns.pager;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;

public class PagerTitleDemoActivity extends Activity {
    /** Called when the activity is first created. */
    private ViewPager mViewPager;
    private PagerTitleStrip mPagerTitleStrip;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mViewPager = (ViewPager)findViewById(R.id.viewpager);
        mPagerTitleStrip = (PagerTitleStrip)findViewById(R.id.pagertitle);
        
        //将要分页显示的View装入数组中
        LayoutInflater mLi = LayoutInflater.from(this);
        View view1 = mLi.inflate(R.layout.view1, null);
        View view2 = mLi.inflate(R.layout.view2, null);
        View view3 = mLi.inflate(R.layout.view3, null);
        
        //每个页面的Title数据
        final ArrayList<View> views = new ArrayList<View>();
        views.add(view1);
        views.add(view2);
        views.add(view3);
        
        final ArrayList<String> titles = new ArrayList<String>();
        titles.add("tab1");
        titles.add("tab2");
        titles.add("tab3");
        
        //填充ViewPager的数据适配器
        PagerAdapter mPagerAdapter = new PagerAdapter() {
            
            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
            }
            
            @Override
            public int getCount() {
                return views.size();
            }

            @Override
            public void destroyItem(View container, int position, Object object) {
                ((ViewPager)container).removeView(views.get(position));
            }

            @Override
            public CharSequence getPageTitle(int position) {
                return titles.get(position);
            }

            @Override
            public Object instantiateItem(View container, int position) {
                ((ViewPager)container).addView(views.get(position));
                return views.get(position);
            }
        };
        
        mViewPager.setAdapter(mPagerAdapter);
    }
}
复制代码

运行效果:

from:http://my.oschina.net/fanxiao/blog/40306


3、Gallery

复制代码
package xiaosi.gallery;

import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

public class GalleryActivity extends Activity {
    /** Called when the activity is first created. */
    private Gallery gallery =null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        gallery = (Gallery)findViewById(R.id.gallery);
        //设置图片适配器
        gallery.setAdapter(new ImageAdapter(this));
        gallery.setSpacing(5);
        
        //设置监听器
        gallery.setOnItemClickListener(new OnItemClickListener() {
            
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,    long arg3) {
                Toast.makeText(GalleryActivity.this, "点击了第"+arg2+"张图片", Toast.LENGTH_LONG).show();
            }
        });
    }
}

class ImageAdapter extends BaseAdapter{
    
    int mGalleryItemBackground;
    private Context context;
    //图片源数组
    private Integer[] imageInteger={
            R.drawable.a,
            R.drawable.b,
            R.drawable.c,
            R.drawable.d
    };
    public ImageAdapter(Context c){
        context = c;
        TypedArray attr = context.obtainStyledAttributes(R.styleable.HelloGallery);        
        mGalleryItemBackground = attr.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground, 0);        
        attr.recycle();
    }
    // 获取图片的个数
    public int getCount() {
        return imageInteger.length;
    }
    // 获取图片在库中的位置  
    public Object getItem(int position) {
        return position;
    }
    // 获取图片ID  
    public long getItemId(int position) {
        return position;
    }
    public View getView(int position, View convertView, ViewGroup parent) {
        
        ImageView imageView = new ImageView(context);
        // 给ImageView设置资源
        imageView.setImageResource(imageInteger[position]);
        // 设置显示比例类型  
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        // 设置布局 图片120*80 
        imageView.setLayoutParams(new Gallery.LayoutParams(180, 100));
        imageView.setBackgroundResource(mGalleryItemBackground);        
        return imageView;
    }
}
复制代码

mian.xml

 

复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:background="?android:galleryItemBackground"/>
</LinearLayout>
复制代码

创建一个新的XML文件在res/values/目录下 attrs.xml命名。

这是一个定制的styleable资源,可以应用于一个布局。

 

<?xml version="1.0" encoding="utf-8"?>
<resources>    
    <declare-styleable name="HelloGallery">       
         <attr name="android:galleryItemBackground" />    
    </declare-styleable>
</resources>
硬件开发实践:高速 PCB 差分信号与时钟同步优化 由两条互补信号线组成(正负极)接收端只关注两线之间电压差共模噪声对两线同时作用,可被抵消。 阅读详情

相关推荐

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

android - 滑动效果之ViewFlipper与ViewPager与Gallery

1、ViewFlipper 1)View切换的控件—ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。 setInAnimation:设置View进入屏幕时候使用的动画。...

weixin_34163741的博客 283

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 943

Android开发笔记(二十一)横幅轮播页Banner

如今我们打开电商类的APP,首页上方就有很炫的Banner(横幅轮播页),里面放了最新的商品和活动的介绍图片,还能自动轮播,也可左右翻动,着实是吸引眼球。 下面是一个Banner的截图,我们看看这个Banner是如何实现的。 首先看到Banner的界面由两部分组成,一部分是轮播的图片,另一部分是图片下方的几个图标用来表示当前播放的是第几张图片。所以一个Banner需要先初始化两个队列,

aqi00的博客 6278

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 413

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

ViewPager讲解以及ViewFlipper

1.加入ViewPager最好导入<android.support.v4.view.ViewPager>兼容低版本 2.将布局转换为View的方法 3.适配器类型 PagerAdapter数据适配器,以View(4个View配置文件)作为数据对象填充 课程Demopublic class MyPagerAdapter extends PagerAdapter { pr...

weixin_30929195的博客 199

DPARSF高级版 vs 基础版怎么选?没有T1数据也能做fMRI分析吗?

本文深度对比了DPARSF高级版与基础版在fMRI分析中的核心差异与适用场景,特别针对无T1数据的情况提供了实战解决方案。高级版依赖T1像实现高精度配准,适合需要精确解剖定位的研究;基础版则无需T1数据,适用于功能连接等相对空间要求不高的分析。文章还提供了版本选择决策树和常见问题解决方案,帮助研究者根据实际需求做出最优选择。

weixin_42526087的博客 132

【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)...

现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么。。。嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到。。。)1.ViewPager 2.ViewFlipper 3.ViewFlow一.ViewPager官方文...

weixin_34283445的博客 369

解决PubMed卡在“正在检查浏览器”页面的完整排查指南

DNS解析是将域名转换为IP地址的基础网络服务,其稳定性和准确性直接影响网站访问。当DNS服务器响应缓慢或返回异常结果时,可能导致客户端与服务器建立连接时出现偏差,从而触发网站的安全验证机制,例如Cloudflare等安全服务提供的浏览器环境检查。这一机制旨在防御恶意流量,但偶尔也会误拦截正常访问。在生物医学信息检索领域,PubMed作为核心文献数据库,其稳定访问对科研工作流至关重要。针对因DNS或本地缓存问题导致的‘正在检查浏览器’页面卡顿,通过刷新DNS缓存、更换为Google Public DNS或C

weixin_29597551的博客 3572

08-StarRocks性能调优FAQ

StarRocks性能调优摘要 本文提供了StarRocks数据库性能调优的常见问题解答,涵盖查询优化、索引设计、分区策略和系统配置等关键方面。主要内容包括:查询优化技巧(使用EXPLAIN分析、避免全表扫描、优化JOIN和聚合查询);索引选择与维护建议(高频查询列索引、复合索引);分区策略设计(时间分区、范围分区)及其管理方法;以及系统内存配置优化(JVM参数调整、查询内存限制设置)。这些优化措施可显著提升StarRocks的查询性能和系统效率。

欢迎来到我的博客,一起探索代码里的世界! 541

Android 中 ViewFlipper、AdapterViewFlipper使用

公告轮播效果,ViewFlipper、AdapterViewFlipper使用对比

周平的博客 3042

检索增强生成(RAG)、微调(Fine-tuning)与知识蒸馏(Knowledge Distillation):核心差异与技术选型指南

在自然语言处理(NLP)领域,大型预训练语言模型(如GPT、BERT系列)的崛起彻底改变了技术生态。面对实际业务场景中模型效果优化与资源效率平衡的永恒命题,开发者主要依赖三大技术路径:检索增强生成(Retrieval-Augmented Generation, RAG)、模型微调(Fine-tuning)和知识蒸馏(Knowledge Distillation)。本文将通过技术原理拆解、典型应用场景对比和实战选型策略三个维度,深入解析这三种技术的本质差异。

fudaihb的博客 1826

ViewPager和ViewFlipper

ViewPager讲解以及ViewFlipper 1.加入ViewPager最好导入兼容低版本 2.将布局转换为View的方法 3.适配器类型 PagerAdapter数据适配器,以View(4个View配置文件)作为数据对象填充 课程Demo public class MyPagerAdapter extends PagerAdapter { private List v

米小豆的博客 405

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ViewPager和ViewFlipper的基本原理

ViewPager extends ViewGroup ViewPager实现了onMeasure,onLayout,draw(),onDraw(),draw()中主要是绘制EdgeEffect(阻尼效果),onDraw中主要是绘制marginDrawable。使用VelocityTracker,Scroller及scrollTo()方法实现滑动和fling ViewFlipper ex...

淡淡的宁静的博客 788

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android中启动页ViewPager和ViewFlipper带指示器

Android的启动页的实现,ViewPager和ViewFlipper带指示器功能。

Millet 5081

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ViewFlipper和ViewPager,fluttertextfield高度

下面的代码片段详细说明了如何实现滑动翻页。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android” android:layout_width=“fill_parent” android:layout_height=“fill_parent” android:orientation=“vertical” > <V

flunsna的博客 190

ViewPager和ViewFlipper和Gallery

ViewPager继承ViewGroup,多和Fragment一起使用。 因为Fragment有自己的生命周期,ViewPager也有自己的适配器PagerAdapter,所以ViewPager+Fragment更适合于复杂的视图切换,实现数据动态加载。 ViewFlipper继承ViewAnimator,ViewAnimator继承FrameLayout。 ViewFlipper作用主要是为Vie

carter_yu的博客 557

viewpager和viewFlipper

1、ViewFlipper 1)View切换的控件—ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。 setInAnimation:设置View进入屏幕

wj2030的专栏 633

ViewFlipper和ViewPager的区别

http://blog.youkuaiyun.com/linghu_java/article/details/8696630 1.ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。 2.ViewP

FastThinking的专栏 6122

AndroidのViewFlipper和ViewPager

AndroidのViewFlipper和ViewPager 1. 知识点:      1.ViewFlipper基本用法及动态添加View; 任意张图片实现循环滑动,其实PageFlipper当前最多的子View个数(ChildViewCount)小于等于2. 2.  1、ViewFlipper 1)View切换的控件—ViewFlipper介绍 Vi

Steampy专栏 737

页面轮换,ViewFlipper 和 ViewPager 的区别

ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。 ViewPager继承ViewGroup。和Fragment是好搭档,Fragment有自己的生命周期。也就是说ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实

u013714869的专栏 476

ViewFlipper、ViewPager和Gallery

1、ViewFlipper 1)View切换的控件—ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类。而ViewAnimator类继承于FrameLayout。 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果。该类有如下几个和动画相关的方法。 setInAnimation:设置View进入屏幕时候使用的动...

weixin_30394333的博客 101

安卓ViewFlipper和ViewPager

先说说两者的区别:(转自:http://www.cnblogs.com/a121984376/p/3600694.html) ViewFlipper继承ViewAnimator,切换view的时候是有动画效果的,适合做ppt,多界面的程序欢迎引导界面,算是个轻量级的组件,适合展示静态数据,少量数据。 ViewPager继承ViewGroup。看官网描述,这货和Fragment是好搭档,Frag...

weixin_30252709的博客 143

Android开发 - ViewPager和ViewFlipper控件的使用 - 实现图片内容轮播(无限滚动、自动滚动和显示小白点)

文章目录ViewPager简单demo - 手动滑动添加动画设置监听无限滚动自动滚动小白点手势或者触摸监听触摸监听事件手势监听事件点击事件ViewFlipper简单demo动画事件监听 突发奇想,想到了APP上的图片轮播的功能,感觉很实用啊,就查了一下,然后学一学玩一玩。 不仅可以用于App首页的图片内容轮播,还可以用于启动页的滑动介绍等等。 ViewPager ViewPager是Android...

RBK的博客 1781

RadioGroup+ViewFlipper和ViewPager简单实现三分页

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34043301的博客 118
上一篇: android之Fragment(官网资料翻译)
下一篇: Http详解
cding1818
博客等级 码龄17年 963粉丝 154原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值