Android实现广告页图片无限轮播
2016-01-19 14:22
513 查看
一.概述
对于一个联网的Android应用, 首页广告无限轮播基本已经成为标配了.
那么它是怎么实现的呢?
有几种实现方式呢?
二.无限轮播的实现
1.最常规的手段是用 ViewPager来实现
2.比较原始的手段是: Gallery 画廊来实现
3.最简单的实现手段是: Android image slider第三方库
下面由简到难依次实现
第三方库 Android image slider
github:https://github.com/daimajia/AndroidImageSlider/
只看图片就发现,非常绚丽, 有很多轮播方式可以选择,并且指示器图标也有很多选择方式, DIY 非常自由化.
步骤一:如果用AS开发需引入下面的库:
步骤二:添加权限:
步骤三: xml 的写法
最后奉上代码:
注意一点: 如果 图片不带标题, 可以使用DefaultSliderView , 如果图片有标题 就用TextSliderView
分割线-------------------------------------------------------------------------------------------------------
方式2: 使用Gallery 画廊来实现图片无限轮播
对于一个联网的Android应用, 首页广告无限轮播基本已经成为标配了.
那么它是怎么实现的呢?
有几种实现方式呢?
二.无限轮播的实现
1.最常规的手段是用 ViewPager来实现
2.比较原始的手段是: Gallery 画廊来实现
3.最简单的实现手段是: Android image slider第三方库
下面由简到难依次实现
第三方库 Android image slider
github:https://github.com/daimajia/AndroidImageSlider/
只看图片就发现,非常绚丽, 有很多轮播方式可以选择,并且指示器图标也有很多选择方式, DIY 非常自由化.
步骤一:如果用AS开发需引入下面的库:
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" />
步骤三: xml 的写法
Add the Slider to your layout: <com.daimajia.slider.library.SliderLayout android:id="@+id/slider" android:layout_width="match_parent" android:layout_height="200dp" /> There are some default indicators. If you want to use a provided indicator: <com.daimajia.slider.library.Indicators.PagerIndicator android:id="@+id/custom_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" />
最后奉上代码:
package com.daimajia.slider.demo; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; 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 com.daimajia.slider.library.Tricks.ViewPagerEx; import java.util.HashMap; public class MainActivity extends ActionBarActivity 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,String> url_maps = new HashMap<String, String>(); url_maps.put("Hannibal", "http://static2.hypable.com/wp-content/uploads/2013/12/hannibal-season-2-release-date.jpg"); url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png"); url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg"); url_maps.put("Game of Thrones", "http://images.boomsbeat.com/data/images/full/19640/game-of-thrones-season-4-jpg.jpg"); HashMap<String,Integer> file_maps = new HashMap<String, Integer>(); file_maps.put("Hannibal",R.drawable.hannibal); file_maps.put("Big Bang Theory",R.drawable.bigbang); file_maps.put("House of Cards",R.drawable.house); file_maps.put("Game of Thrones", R.drawable.game_of_thrones); for(String name : file_maps.keySet()){ TextSliderView textSliderView = new TextSliderView(this); // initialize a SliderLayout textSliderView .description(name) .image(file_maps.get(name)) .setScaleType(BaseSliderView.ScaleType.Fit) .setOnSliderClickListener(this); //add your extra information 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); ListView l = (ListView)findViewById(R.id.transformers); l.setAdapter(new TransformerAdapter(this)); l.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mDemoSlider.setPresetTransformer(((TextView) view).getText().toString()); Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show(); } }); } @Override protected void onStop() { // To prevent a memory leak on rotation, make sure to call stopAutoCycle() on the slider before activity or fragment is destroyed mDemoSlider.stopAutoCycle(); super.onStop(); } @Override public void onSliderClick(BaseSliderView slider) { Toast.makeText(this,slider.getBundle().get("extra") + "",Toast.LENGTH_SHORT).show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.main,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_custom_indicator: mDemoSlider.setCustomIndicator((PagerIndicator) findViewById(R.id.custom_indicator)); break; case R.id.action_custom_child_animation: mDemoSlider.setCustomAnimation(new ChildAnimationExample()); break; case R.id.action_restore_default: mDemoSlider.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); mDemoSlider.setCustomAnimation(new DescriptionAnimation()); break; case R.id.action_github: Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/daimajia/AndroidImageSlider")); startActivity(browserIntent); break; } return super.onOptionsItemSelected(item); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} @Override public void onPageSelected(int position) { Log.d("Slider Demo", "Page Changed: " + position); } @Override public void onPageScrollStateChanged(int state) {} }
注意一点: 如果 图片不带标题, 可以使用DefaultSliderView , 如果图片有标题 就用TextSliderView
分割线-------------------------------------------------------------------------------------------------------
方式2: 使用Gallery 画廊来实现图片无限轮播
相关文章推荐
- android动画坐标定义
- Android使用Fiddler抓包
- Android一体机Launcher开发
- FFmpeg 2.8.4 移植到android平台(二)
- Android ImagView的ScaleType属性
- Android的Handler机制
- Android开发之录制视频
- Android编程实现开始及停止service的方法
- android之wifi开发
- Android之XML生成与解析工具——XmlSerializer
- Android View 绘制流程
- Android Google Map学习三(显示位置的地址)
- 安卓开发之非常好用的AndroidOne框架DownloadManager
- Android学习笔记--远程服务的使用
- android 录制手机视频与生成gif图片
- android快速入门
- android——xml drawable实现背景样式
- Android 开发中遇到的一些问题_
- Android开发之拍照
- android urlconnection get请求异常