android中使用slider加载网络图片,众所周知,在开发App的时候,差不多每个app的主页面的搭建都少不了广告轮播,广告轮播,我们可以手动轮播,也可以让其自动轮播,这都是可以的,当我们使用ViewPager来实现轮播时,代码比较多,还需要适配器,有时候稍微不细心就会出现各种bug,那么接下来我来介绍一种代码简单,实现效果更好的一个框架slider
首先我们需要导入依赖:
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.slider:library:1.1.5@aar'
然后下一下activity_main代码
<?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:custom="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="com.example.mysliderdemo.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="300dp">
<com.daimajia.slider.library.SliderLayout
android:id="@+id/slider"
android:layout_width="match_parent"
android:layout_height="300dp"
>
<com.daimajia.slider.library.Indicators.PagerIndicator
android:id="@+id/custom_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
custom:selected_color="@color/colorPrimary"
custom:selected_height="3dp"
custom:selected_padding_left="2dp"
custom:selected_padding_right="2dp"
custom:selected_width="16dp"
custom:shape="rect"
custom:unselected_color="#55333333"
custom:unselected_height="3dp"
custom:unselected_padding_left="2dp"
custom:unselected_padding_right="2dp"
custom:unselected_width="16dp"
/>
</com.daimajia.slider.library.SliderLayout>
</RelativeLayout>
</LinearLayout>
接下来就是MainActivity代码了
package com.example.mysliderdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.daimajia.slider.library.Animations.DescriptionAnimation;
import com.daimajia.slider.library.Indicators.PagerIndicator;
import com.daimajia.slider.library.SliderLayout;
import com.daimajia.slider.library.SliderTypes.BaseSliderView;
import com.daimajia.slider.library.SliderTypes.TextSliderView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private SliderLayout sliderLayout;
private PagerIndicator indicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initImageSlider();
}
/**
* 初始化首页的商品广告条
*/
private void initImageSlider() {
sliderLayout = (SliderLayout) findViewById(R.id.slider);
indicator = (PagerIndicator) findViewById(R.id.custom_indicator);
//准备好要显示的数据
List<String> imageUrls = new ArrayList<>();
final List<String> descriptions = new ArrayList<>();
imageUrls.add("http://img.tupianzj.com/uploads/allimg/161126/16-161126140033.jpg");
imageUrls.add("http://img.tupianzj.com/uploads/allimg/170125/9-1F125162103-50.jpg");
imageUrls.add("http://img.idol001.com/middle/2016/09/10/333786b8210491945f182798c5a03bdd1473504572.jpg");
imageUrls.add("http://img.tupianzj.com/uploads/allimg/161214/16-1612141401090-L.jpg");
descriptions.add("王妍之");
descriptions.add("迪丽热巴");
descriptions.add("赵丽颖");
descriptions.add("陈钰琪");
for (int i = 0; i < imageUrls.size(); i++) {
//新建三个展示View,并且添加到SliderLayout
TextSliderView tsv = new TextSliderView(this);
tsv.image(imageUrls.get(i)).description(descriptions.get(i));
final int finalI = i;
tsv.setOnSliderClickListener(new BaseSliderView.OnSliderClickListener() {
@Override
public void onSliderClick(BaseSliderView slider) {
Toast.makeText(MainActivity.this, descriptions.get(finalI), Toast.LENGTH_SHORT).show();
}
});
sliderLayout.addSlider(tsv);
}
//对SliderLayout进行一些自定义的配置
sliderLayout.setCustomAnimation(new DescriptionAnimation());
sliderLayout.setPresetTransformer(SliderLayout.Transformer.Accordion);
sliderLayout.setDuration(2000);
// sliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);
sliderLayout.setCustomIndicator(indicator);
}
}
代码就写完了,接下来看下效果吧:
好了就是这样,下期将写另一种加载图片的控件。。。