记一个viewpager,用到网络取数据,回调,设置滑动
2016-10-16 16:04
357 查看
fragment中
public class Fragment1 extends Fragment {
private String imgage="http://192.168.11.57/my/cookbook_hongshairou.bmp";
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_layout, null);
final ImageView img=(ImageView) view.findViewById(R.id.img);
//回调,设置图片
NetImageUtil.getImage(imgage, new ImageTool() {
@Override
public void setImage(Bitmap bmp) {
img.setImageBitmap(bmp);
}
});
return view;
}
}
自定义工具中
public class NetImageUtil {
public interface ImageTool{
void setImage(Bitmap bmp);
}
public ImageTool tool;
//传入图片路径和接口
public static void getImage(final String path,final ImageTool tool){
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
Bitmap bmp=(Bitmap) msg.obj;
//接口中的函数,回调操作
tool.setImage(bmp);
}
};
//线程里
new Thread(new Runnable() {
@Override
public void run() {
//网络获取数据
try {
HttpClient http=new DefaultHttpClient();
HttpPost request=new HttpPost(path);
HttpResponse resp=http.execute(request);
byte[] data=EntityUtils.toByteArray(resp.getEntity());
Bitmap bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
Message msg=handler.obtainMessage();
//将内容放到msg中发送
msg.obj=bitmap;
handler.sendMessage(msg);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
mainactivity中
public class MainActivity extends FragmentActivity {
private ViewPager pager;
public static String[] imgPath={"http://192.168.11.57/my/cookbook_hongshairou.bmp",
"http://192.168.11.57/my/cookboook_malexiangguo.bmp",
"http://192.168.11.57/my/touxiang.png",
"http://192.168.11.57/my/wo-de.png"};
private List<Fragment> list=new ArrayList<Fragment>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager=(ViewPager) findViewById(R.id.pager);
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
list.add(new Fragment4());
pager.setAdapter(new MyAdapter(getSupportFragmentManager()));
}
//这里用fragmentstatepageradapter,销毁后数据不会储存在内存中,可以加载很多
class MyAdapter extends FragmentStatePagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
}
}
public class Fragment1 extends Fragment {
private String imgage="http://192.168.11.57/my/cookbook_hongshairou.bmp";
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_layout, null);
final ImageView img=(ImageView) view.findViewById(R.id.img);
//回调,设置图片
NetImageUtil.getImage(imgage, new ImageTool() {
@Override
public void setImage(Bitmap bmp) {
img.setImageBitmap(bmp);
}
});
return view;
}
}
自定义工具中
public class NetImageUtil {
public interface ImageTool{
void setImage(Bitmap bmp);
}
public ImageTool tool;
//传入图片路径和接口
public static void getImage(final String path,final ImageTool tool){
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
Bitmap bmp=(Bitmap) msg.obj;
//接口中的函数,回调操作
tool.setImage(bmp);
}
};
//线程里
new Thread(new Runnable() {
@Override
public void run() {
//网络获取数据
try {
HttpClient http=new DefaultHttpClient();
HttpPost request=new HttpPost(path);
HttpResponse resp=http.execute(request);
byte[] data=EntityUtils.toByteArray(resp.getEntity());
Bitmap bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
Message msg=handler.obtainMessage();
//将内容放到msg中发送
msg.obj=bitmap;
handler.sendMessage(msg);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
mainactivity中
public class MainActivity extends FragmentActivity {
private ViewPager pager;
public static String[] imgPath={"http://192.168.11.57/my/cookbook_hongshairou.bmp",
"http://192.168.11.57/my/cookboook_malexiangguo.bmp",
"http://192.168.11.57/my/touxiang.png",
"http://192.168.11.57/my/wo-de.png"};
private List<Fragment> list=new ArrayList<Fragment>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager=(ViewPager) findViewById(R.id.pager);
list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
list.add(new Fragment4());
pager.setAdapter(new MyAdapter(getSupportFragmentManager()));
}
//这里用fragmentstatepageradapter,销毁后数据不会储存在内存中,可以加载很多
class MyAdapter extends FragmentStatePagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
}
}
相关文章推荐
- Viewpager+Fragment滑动更改ListView数据和设置title文字的变化
- Fragment+ViewPager滑动,网络恢复时滑动刷新Fragment数据
- 在ViewPager+Fragment实现Tabhost基础之上实现滑动到当前Fragment加载网络数据
- 网络获取图片数据后 利用viewpager实现弹簧效果
- 利用ViewPager+FragmentPagerAdapter+Fragment做一个能左右滑动的页面
- 自己动手实现一个可垂直滑动的ViewGroup,相当于可以垂直滑动的viewpager
- Viewpager设置滑动速率以及外部按钮控制viewpager的左右切换
- ViewPager嵌套Fragment来回滑动重新加载数据
- 解决一个页面同时存在ScrollView和Viewpager时viewpager页面滑动不畅
- ViewPager设置 缓存个数、页卡间距、数据更新
- 【使用JSOUP实现网络爬虫】修改数据-设置一个元素的HTML内容
- android viewPager滑动速度设置
- Android中仿淘宝商品详情ViewPager页面数据手动滑动
- Android ViewPager简单几行代码设置滑动动画
- android ViewPager实现的轮播图广告自定义视图,网络获取图片和数据
- 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
- ViewPager设置 缓存个数、页卡间距、数据更新
- ViewPager页面滑动,滑动到最后一页,再往后滑动则执行一个事件
- ViewPager设置 缓存个数、页卡间距、数据更新
- ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应。