picasso实现图片加载,参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1639.html

这里只是简单的讲这里面的使用,

先:把picasso的jar包下载下来导入工程中,

然后:在需要使用的地方写代码:Picasso.with(context).load(path).placeholder(R.id.xxx).error(R.id.xxx).into(ImageView);

注:context是一个Activity上下文对象,

load(path)里面传入的是需要下载的网上的图片路径,也可以传其他的,比如uri,file什么的,

placeholder()里面传入的是如果图片没有加载出来(加载需要时间,当前时间加载不出来的时候)显示的图片,可以传资源id,也可以传Drawable对象

error()是出现错误的时候显示的图片

into()是表示前面加载的图片显示在哪一个控件上,比如ImageView


android实现广告自动滚动:

广告要显示的地方定义一个相对布局包含一个ViewPager,然后把单选按钮放在相对布局的右下角(自己想要的位置,多半在右下角)



代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical" >    <android.support.v4.view.ViewPager        android:id="@+id/viewpager"        android:layout_width="match_parent"        android:layout_height="200dp"         android:background="#696969"/>    <RadioGroup        android:id="@+id/RadioGroup"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignBottom="@+id/viewpager"        android:layout_alignParentRight="true"        android:layout_marginBottom="5dp"        android:orientation="horizontal" >        <RadioButton            android:id="@+id/radio1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:button="@null"            android:checked="true"            android:drawableLeft="@drawable/radiobutton_selector"            android:padding="2dp" />        <RadioButton            android:id="@+id/radio2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:button="@null"            android:drawableLeft="@drawable/radiobutton_selector"            android:padding="2dp" />        <RadioButton            android:id="@+id/radio3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:button="@null"            android:drawableLeft="@drawable/radiobutton_selector"            android:padding="2dp" />        <RadioButton            android:id="@+id/radio4"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:button="@null"            android:drawableLeft="@drawable/radiobutton_selector"            android:padding="2dp" />    </RadioGroup></RelativeLayout>

为ViewPager添加Adapter------ ViewPagerAdapter.java

public class ViewPagerAdapter extends PagerAdapter {//界面列表      private List<View> views;            public ViewPagerAdapter (List<View> views){          this.views = views;      }          @Override      public int getCount() {      return views==null?0:views.size();    }               @Override      public void finishUpdate(View arg0) {          // TODO Auto-generated method stub                }        @Override      public void destroyItem(View arg0, int arg1, Object arg2) {          ((ViewPager)arg0).removeView(views.get(arg1));           }        @Override      public Object instantiateItem(View arg0, int arg1) {                    ((ViewPager)arg0).addView(views.get(arg1), 0);                    return views.get(arg1);      }      @Override      public boolean isViewFromObject(View arg0, Object arg1) {          return (arg0 == arg1);      }        @Override      public void restoreState(Parcelable arg0, ClassLoader arg1) {          // TODO Auto-generated method stub                }        @Override      public Parcelable saveState() {          // TODO Auto-generated method stub          return null;      }        @Override      public void startUpdate(View arg0) {          // TODO Auto-generated method stub                }  }

在Activity中实现ViewPager的左右滑动切换图片和单选按钮点击,让ViewPager显示点击的页面,这个在之前的博客(引导页面)讲过,这里不细说,直说核心的代码,及怎么去实现自动滚动

(1)定义一个全局变量:private int currentItem; // 当前页面

(这是为了记录当前页面,这样自动播放的时候才会知道该播放显示那一个,所以单选按钮切换的时候viewpager.setCurrentItem(x);更改当前页面的currentItem 值:currentItem = x,滑动改变页面的时候也要写:currentItem = position;)

(2)自动滚动肯定要开线程,线程做的就是停一点时间(比如2秒),完了之后告诉Holder去改变显示的页面:

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// 设置当前页面
vp.setCurrentItem(currentItem);
};
};

(3)线程写在onStart()里面:




这就能实现图片像广告一样自动播放,同时也可以点击进选择,也可以滑动选择



如果要实现加载网络上的图片,在给adapter需要的list赋值的时候,选择加载网络图片就可以了

//图片path

private static final String[] picPath = { "http://img.sccnn.com/bimg/337/9373.jpg",
"http://img.sccnn.com/bimg/311/011.jpg", "http://img.hexun.com/2011-06-07/130316357.jpg",
"http://down1.sucaitianxia.com/psd02/psd158/psds27988.jpg" };

for (int i = 0; i < picPath.length; i++) {
ImageView iv = new ImageView(this);
iv.setLayoutParams(mParams);
Picasso.with(this).load(picPath[i]).into(iv);//用picasso加载图片
iv.setScaleType(ScaleType.FIT_XY);
views.add(iv);
}


MainActivity.java


package com.example.myad;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;import com.squareup.picasso.Picasso;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.ImageView.ScaleType;import android.widget.RadioGroup.OnCheckedChangeListener;public class MainActivity extends Activity {private ViewPager vp;private ViewPagerAdapter vpAdapter;private List<View> views;private RadioGroup group;private RadioButton radioButton;private int currentItem; // 当前页面private ScheduledExecutorService scheduledExecutorService;private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {// 设置当前页面vp.setCurrentItem(currentItem);};};private static final int[] pics = { R.drawable.self_update_banner, R.drawable.connection_login_header,R.drawable.self_update_banner, R.drawable.connection_login_header };private static final String[] picPath = { "http://img.sccnn.com/bimg/337/9373.jpg","http://img.sccnn.com/bimg/311/011.jpg", "http://img.hexun.com/2011-06-07/130316357.jpg","http://down1.sucaitianxia.com/psd02/psd158/psds27988.jpg" };@Overrideprotected void onStart() {super.onStart();scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();// 每隔2秒钟切换一张图片scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 2, 2, TimeUnit.SECONDS);// scheduleAtFixedRate(command, initialDelay, period, unit);// command:执行线程 initialDelay:初始化延时 period:前一次执行结束到下一次执行开始的间隔时间(间隔执行延迟时间)// unit:计时单位}// 切换图片private class ViewPagerTask implements Runnable {@Overridepublic void run() {currentItem = (currentItem + 1) % pics.length;// 更新界面handler.obtainMessage().sendToTarget();// message对象sendToTarget(),handler对象sendMessage();}}@SuppressWarnings("deprecation")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);vp = (ViewPager) findViewById(R.id.viewpager);group = (RadioGroup) findViewById(R.id.RadioGroup);group.setOnCheckedChangeListener(listener);views = new ArrayList<View>();LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);for (int i = 0; i < picPath.length; i++) {ImageView iv = new ImageView(this);iv.setLayoutParams(mParams);Picasso.with(this).load(picPath[i]).error(pics[i]).into(iv);iv.setScaleType(ScaleType.FIT_XY);views.add(iv);}vpAdapter = new ViewPagerAdapter(views);vp.setAdapter(vpAdapter);vp.setOnPageChangeListener(new OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {radioButton = (RadioButton) group.getChildAt(position);radioButton.setChecked(true);currentItem = position;}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}});}OnCheckedChangeListener listener = new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkId) {switch (checkId) {case R.id.radio1:vp.setCurrentItem(0);currentItem = 0;break;case R.id.radio2:vp.setCurrentItem(1);currentItem = 1;break;case R.id.radio3:vp.setCurrentItem(2);currentItem = 2;break;case R.id.radio4:vp.setCurrentItem(3);currentItem = 3;break;default:break;}}};}


源代码:http://download.csdn.net/detail/qq_30716173/9273873


更多相关文章

  1. Android(安卓)Studio图片框
  2. Android(安卓)异步加载图片-AsyncTask
  3. Android(安卓)开机图片/文字/动画 修改
  4. 蒙板引导页面
  5. Android中TextView显示插入的图片实现方法
  6. Android实现js及webview交互之在html页面中调用系统摄像头
  7. Android实现BMP和PNG转换为JPEG格式
  8. android 获取相册图片及路径
  9. android加载大量图片内存溢出bitmap size exceeds VM budget的解

随机推荐

  1. Datagrip2020下载MySQL驱动失败的问题
  2. MySQL如何通过Navicat实现远程连接
  3. 一次Mysql使用IN大数据量的优化记录
  4. 详解mysql慢日志查询
  5. mysql8.0.20配合binlog2sql的配置和简单
  6. MySQL索引失效的几种情况汇总
  7. 详解MySQL 聚簇索引与非聚簇索引
  8. MySQL 索引的优缺点以及创建索引的准则
  9. MySQL MyISAM 与InnoDB 的区别
  10. MySQL btree索引与hash索引区别