博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我学安卓——ImageSwitcher
阅读量:6893 次
发布时间:2019-06-27

本文共 1626 字,大约阅读时间需要 5 分钟。

  hot3.png

ImageSwitcher据应用开发的同学说用的比较少,但是最近因为在一个QQ群里有人问一个效果如何实现,所以我也就是顺便学习一下。

先是在布局中引入ImageSwitcher:

然后代码中给ImageSwitcher设置一个

ViewSwitcher.ViewFactory

对象,这样在就可以生成出用于将来切换图片做动效的ImageView。需要注意的是,ImageSwitcher并不是在每次切换的时候都产生一个新的ImageView(其实想想也应该明白,这样的效率太低),而是在setFactory方法调用的时候,就产生了两个ImageView,以后的切换就是基于这两个ImageView所做的了。

public class MainActivity extends AppCompatActivity {    ImageSwitcher switcher;    int i=0;    private int[] imgs={R.drawable.a,R.drawable.b};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        switcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);        //在这个方法中,会调用其父类ViewSwitcher的setFactory方法,并在其中调用两次obtainView,        //产生两个ImageView,用于将来的切换,如果不设置ViewFactory,也可以调用两次addView来代替        switcher.setFactory(new ViewSwitcher.ViewFactory() {            @Override            public View makeView() {                ImageView imageView = new ImageView(MainActivity.this);                Log.d("SSSS","return new imgView");                return imageView;            }        });        switcher.setInAnimation(this, R.anim.abc_fade_in);//设置切入动画        switcher.setOutAnimation(this, R.anim.abc_fade_out);//设置切出动画    }    @Override    public boolean onTouchEvent(MotionEvent event) {        if(event.getAction()==MotionEvent.ACTION_DOWN){            switcher.setImageResource(imgs[i%2]);            i++;            return true;        }        return super.onTouchEvent(event);    }}

如上代码中的注释所说,setFactory方法可以由调用两次addView方法来代替。最后看一下效果:

切换效果

 

 

 

 

 

 

 

 

 

 

OK。

 

 

 

转载于:https://my.oschina.net/tnjin/blog/739585

你可能感兴趣的文章
学习记录:浏览器JAVASCRIPT里的WINDOWS,DOCUMNET
查看>>
Nginx内置变量以及日志格式变量参数详解
查看>>
Linux简单了解
查看>>
Importing Swift into Objective-C
查看>>
oracle merge同时包含增、删、改
查看>>
Docker 命令
查看>>
如何在andorid native layer中加log function.【转】
查看>>
创建以API为中心的Web应用(转)
查看>>
互动网计算机频道图书7日销售排行(05.12-05.19)
查看>>
POJ 3528 Ultimate Weapon(三维凸包表面积)
查看>>
Qt信号槽的一些事
查看>>
杂七杂八的文档资料。
查看>>
C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏...
查看>>
启发式算法(Heuristic Algorithm)
查看>>
How to: Set Tomato Firmware for Wireless Client Modes
查看>>
怎么和公司谈出合理的期权激励?
查看>>
产品经理如何进行产品数据分析?
查看>>
『PyTorch』第二弹_张量
查看>>
高刷新率大屏“吃鸡”更轻松,ROG枪神2 Plus游戏本体验
查看>>
.NET (C#) Internals: ASP.NET 应用程序与页面生命周期(意译)
查看>>