这次介绍一下我们android的常用图片滑动的第三方库,AndroidImageSlider的使用,功能很丰富的库,封装了各种动画,我们简单调用即可,那么,如何上手,其实官网已经有了详细的介绍,我只是拿过来做一个小demo,分享下使用心得:
首先在我们的gradle中去添加依赖:
dependencies {
compile "com.android.support:support-v4:+"
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.slider:library:1.1.5@aar'
}
其次在权限中添加网络权限或者读储存权限,按需求增加:
<!-- if you want to load images from the internet -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- if you want to load images from a file OR from the internet -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
然后在我们的布局文件中添加sliderlayout即可:
<com.daimajia.slider.library.SliderLayout android:id="@+id/slider" android:layout_width="match_parent" android:layout_height="200dp" />然后上代码了,我这里写了很简单的一个例子:
public class MainActivity extends AppCompatActivity implements BaseSliderView.OnSliderClickListener,ViewPagerEx.OnPageChangeListener {
private SliderLayout mDemoSlider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDemoSlider = (SliderLayout) findViewById(R.id.slider);
HashMap<String,Integer> fils_map = new HashMap<String,Integer>();
fils_map.put("first",R.mipmap.first);
fils_map.put("second",R.mipmap.second);
fils_map.put("third",R.mipmap.third);
fils_map.put("fourth",R.mipmap.fourth);
for (String name : fils_map.keySet()) {
TextSliderView textSliderView = new TextSliderView(this);
textSliderView
.description(name)
.image(fils_map.get(name))
.setScaleType(BaseSliderView.ScaleType.Fit)
.setOnSliderClickListener(this);
textSliderView.bundle(new Bundle());
textSliderView.getBundle().putString("extra",name);
mDemoSlider.addSlider(textSliderView);
}
mDemoSlider.setPresetTransformer(SliderLayout.Transformer.Accordion);
mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
mDemoSlider.setCustomAnimation(new DescriptionAnimation());
mDemoSlider.setDuration(4000);
mDemoSlider.addOnPageChangeListener(this);
}
@Override
protected void onStop() {
mDemoSlider.stopAutoCycle();
super.onStop();
}
@Override
public void onSliderClick(BaseSliderView slider) {
Toast.makeText(this,slider.getBundle().get("extra") + "" , Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
Log.d("Slider demo :","Page Change : " + position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
}
原理很简单,将获取的图片赋给封装好了TextSliderView即可,这个view也只是封装了几个TextView和ImageView,代码如下:
public class TextSliderView extends BaseSliderView{
public TextSliderView(Context context) {
super(context);
}
@Override
public View getView() {
View v = LayoutInflater.from(getContext()).inflate(R.layout.render_type_text,null);
ImageView target = (ImageView)v.findViewById(R.id.daimajia_slider_image);
TextView description = (TextView)v.findViewById(R.id.description);
description.setText(getDescription());
bindEventAndShow(v, target);
return v;
}
}
对于sliderLayout有几个方法说明一下,setPresetTransforms()这方法是页面切换动画,里面有对应各种动画枚举值,选择一个合适
的动画即可,setCustomAnimation是描述的显示动画,跟前面方法一样,有丰富的选项提供选择。
最后效果图: