http://blog.csdn.net/shagoo/article/details/8721267
界面或者板块的切换是Android应用中非常常见的一个功能,本文将给大家介绍一个由本人开发的好用的Android界面切换效果库,同时也谈谈自己对“Android模块化编程”的一些想法。希望大家能通过对界面切换效果库的研究和思考,总结出一套自己的常用功能类库的开发思路。界面切换效果库Demo项目的源码(ShiftEffect.zip)可以点击“
此处下载”。将解压后的项目源码(ShiftEffect)导入到Eclipse中就可以看到这个Demo项目的代码结构了(如下图)。
首先,在模拟器上运行项目代码。可以看到,界面切换效果库的Demo为大家提供了比较丰富的选项,如下图所示;我们可以随意选择切换的内容(文字、图片)、切换的渐变时间、切换的停顿时间以及丰富切换的效果(滚动切换、旋转渐变、大小渐变等)。
下图所示的就是图片切换的效果,大家还可以尝试各种切换的效果,我们可以看到效果还是很流畅的。
界面切换效果库位于ShiftEffect项目的libs目录下,即plugs-effect.jar。该效果库的使用范例都在com.example.scrolleffect包目录下的MainActivity.java文件中,使用方法在代码注释中都已经写的非常清楚了,如下参考。
![谈谈自定义Android界面切换效果库的使用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
首先,在模拟器上运行项目代码。可以看到,界面切换效果库的Demo为大家提供了比较丰富的选项,如下图所示;我们可以随意选择切换的内容(文字、图片)、切换的渐变时间、切换的停顿时间以及丰富切换的效果(滚动切换、旋转渐变、大小渐变等)。
![谈谈自定义Android界面切换效果库的使用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
下图所示的就是图片切换的效果,大家还可以尝试各种切换的效果,我们可以看到效果还是很流畅的。
![谈谈自定义Android界面切换效果库的使用](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
界面切换效果库位于ShiftEffect项目的libs目录下,即plugs-effect.jar。该效果库的使用范例都在com.example.scrolleffect包目录下的MainActivity.java文件中,使用方法在代码注释中都已经写的非常清楚了,如下参考。
- public
class MainActivity extends Activity implements OnItemSelectedListener { -
-
// 展示渐变动效的容器,用于容纳渐变效果库的View控件 -
private LinearLayout container; -
-
// 渐变效果库的View控件类 -
private EffectView mView; -
-
// 文字资源(用于展示渐变切换) -
private String[] mTexts = { "今日新闻1", "今日新闻2", "今日新闻3" }; -
-
// 图片资源(用于展示渐变切换) -
private int[] mImages = { R.drawable.image_1, R.drawable.image_2, R.drawable.image_3 }; -
-
// 切换内容选项 -
private Spinner sp1; -
private ArrayAdapter aa1; -
private String[] menu1 = { "内容:文字", "内容:图片" }; -
-
// 切换渐变时间选项 -
private Spinner sp2; -
private ArrayAdapter aa2; -
private String[] menu2 = { "动时:300ms", "动时:1000ms", "动时:3000ms" }; -
-
// 切换渐变停顿选项 -
private Spinner sp3; -
private ArrayAdapter aa3; -
private String[] menu3 = { "停时:3000ms", "停时:5000ms", "停时:10000ms" }; -
-
// 切换渐变效果选项 -
private Spinner sp4; -
private ArrayAdapter aa4; -
private String[] menu4 = { "动效:向上", "动效:向下", "动效:向左", "动效:向右", "动效:旋转", -
"动效:大小", "动效:渐变" }; -
-
@Override -
public void onCreate(Bundle savedInstanceState) { -
super.onCreate(savedInstanceState); -
setContentView(R.layout.activity_main); -
-
// 初始化展示动效的容器 -
container = (LinearLayout) this.findViewById(R.id.container); -
-
// 初始化各个选项的内容 -
sp1 = (Spinner) findViewById(R.id.spinner1); -
aa1 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, menu1); -
aa1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); -
sp1.setAdapter(aa1); -
sp1.setOnItemSelectedListene r(this); -
-
sp2 = (Spinner) findViewById(R.id.spinner2); -
aa2 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, menu2); -
aa2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); -
sp2.setAdapter(aa2); -
sp2.setOnItemSelectedListene r(this); -
-
sp3 = (Spinner) findViewById(R.id.spinner3); -
aa3 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, menu3); -
aa3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); -
sp3.setAdapter(aa3); -
sp3.setOnItemSelectedListene r(this); -
-
sp4 = (Spinner) findViewById(R.id.spinner4); -
aa4 = new ArrayAdapter(this, android.R.layout.simple_spinner_item, menu4); -
aa4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); -
sp4.setAdapter(aa4); -
sp4.setOnItemSelectedListene r(this); -
} -
-
@Override -
public boolean onCreateOptionsMenu(Menu menu) { -
getMenuInflater().inflate(R.menu.activity_main, menu); -
return true; -
} -
-
@Override -
public void onItemSelected(AdapterView