Fresco网络请求图片和跳转传参
来源:互联网 发布:远走高飞网络歌曲 编辑:程序博客网 时间:2024/05/20 14:25
效果图
首先我们先写一个MyApp类
package com.xxx.day1_fresco;import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}我们用的是RecyclerView展示数据的,然后我们在写一下RecyclerView适配器,里面也有点击事件
package com.xxx.day1_fresco;import android.content.Context;import android.net.Uri;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.facebook.drawee.backends.pipeline.Fresco;import com.facebook.drawee.interfaces.DraweeController;import com.facebook.drawee.view.SimpleDraweeView;/** * Created by 信徒° on 2017/11/27. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> { private Context context; private Bean bean; private OnItemClickListener mOnItemClickListener; public MyAdapter(Context context, Bean bean) { this.context = context; this.bean = bean; } //点击的接口 public interface OnItemClickListener{ void onItemClick(View view,int position); } public void setOnItemClickListener(OnItemClickListener mOnItemClickListener){ this.mOnItemClickListener = mOnItemClickListener; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { //拿到我们自己定义的布局 MyHolder holder = new MyHolder(LayoutInflater.from(context).inflate(R.layout.rv_item, parent, false)); return holder; } @Override public void onBindViewHolder(final MyHolder holder, final int position) { //加载文字 holder.tv.setText(bean.getResult().getTopics().get(position).getTitle()); Uri uri=Uri.parse(bean.getResult().getTopics().get(position).getPic()); //图片构造者 DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); holder.simpleDraweeView.setController(controller); //判断图片点击 if(mOnItemClickListener != null){ holder.simpleDraweeView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mOnItemClickListener.onItemClick(holder.simpleDraweeView,position); } }); } } @Override public int getItemCount() { return bean.getResult().getTopics().size(); } class MyHolder extends RecyclerView.ViewHolder { SimpleDraweeView simpleDraweeView; TextView tv; public MyHolder(View itemView) { super(itemView); simpleDraweeView=itemView.findViewById(R.id.iv); tv = itemView.findViewById(R.id.tv); } }}适配器rv_litem的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="150dp" android:scaleType="fitXY" /> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="30dp" android:text="字体" /></LinearLayout>
Activity中我用的是OkHttp请求的数据,OkHttp那个类我就不写了
package com.xxx.day1_fresco;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.Toast;import com.google.gson.Gson;import java.io.IOException;import okhttp3.Request;public class MainActivity extends AppCompatActivity { private RecyclerView rv; private String path = "http://www.babybuy100.com/API/getShopOverview.ashx"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 rv = (RecyclerView) findViewById(R.id.rv); //请求数据 initData(); } private void initData() { OkHttp.getAsync(path, new OkHttp.DataCallBack() { @Override public void requestFailure(Request request, IOException e) { Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_SHORT).show(); } @Override public void requestSuccess(String result) throws Exception { //解析 Gson gson = new Gson(); final Bean bean = gson.fromJson(result, Bean.class); LinearLayoutManager ling = new LinearLayoutManager(MainActivity.this); rv.setLayoutManager(ling); //拿到适配器 MyAdapter apter = new MyAdapter(MainActivity.this,bean); rv.setAdapter(apter); //点击事件 apter.setOnItemClickListener(new MyAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { //跳转传数据 Intent intent = new Intent(MainActivity.this,Shu_Activity.class); intent.putExtra("tp",bean.getResult().getTopics().get(position).getPic()); intent.putExtra("zt",bean.getResult().getTopics().get(position).getTitle()); startActivity(intent); } }); } }); }}
主布局xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.xxx.day1_fresco.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
Shu_Activity类
package com.xxx.day1_fresco;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;public class Shu_Activity extends AppCompatActivity { private TextView shu_tv; private ImageView shu_iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shu); //找控件 shu_iv = (ImageView) findViewById(R.id.shu_iv); shu_tv = (TextView) findViewById(R.id.shu_tv); //接受传值 Intent intent = getIntent(); String tp = intent.getStringExtra("tp"); Glide.with(this).load(tp).into(shu_iv); shu_tv.setText(intent.getStringExtra("zt")); }}activity_shu.xml布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.xxx.day1_fresco.Shu_Activity"> <ImageView android:id="@+id/shu_iv" android:layout_width="match_parent" android:layout_height="150dp" android:scaleType="fitXY" /> <TextView android:id="@+id/shu_tv" android:layout_width="match_parent" android:layout_height="30dp" android:text="字" /></LinearLayout>最后我们一定不要忘记在清单文件里写网络请求权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:name=".MyApp"build.gradle依赖
compile 'com.facebook.fresco:fresco:0.11.0'compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'compile 'com.github.bumptech.glide:glide:3.6.1'
阅读全文
0 0
- Fresco网络请求图片和跳转传参
- 网络请求库(ion、volley、retrofit)和图片加载库(glide、picasso、fresco)
- Fresco请求图片
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- fresco加载图片+EventBus Activity之间跳转传值+GreenDAo数据库+retrofit请求数据+recyclerview展示数据+ButterKnife找控件
- Fresco图片加载+Eventbus跳转传值+Retrofit请求数据+GreenDao操作数据+Mvp分层+RecyclerView展示数据+ButtonKnife生成控件
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- fresco加载图片+retrofit网络请求+rxjava2+xrecyclerview下拉刷新上拉加载
- mvp购物车的实现 网络请求图片实现跳转
- Fresco和 RecyclerView 实现瀑布流 <图片是用本地图片来模拟网络图片的>
- Android 图片控件Fresco加载网络图片
- Fresco 图片请求库(工具类)
- android图片请求框架Fresco的使用
- mvp,retrofit请求;listview,fresco展示图片
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- MVP+Retrofit网络请求和添加拦截器+Fresco+全选反选与删除
- HDOJ 2143 box
- idea代码字体模糊
- 摘自大牛黄勇老师的文章
- flask post JSON 数据获取方式总结
- Problem I 地名缩写
- Fresco网络请求图片和跳转传参
- 第一个MapReduce案例集群模式&本地模式
- Android percent-support-lib百分比布局
- 修改Ubuntu镜像源
- CNN神经网络解释,及MNIST实例详注
- 【学习笔记】设计模式-迭代器模式
- javaHL(JNI) Not Available
- 【数学期望】Gym 101137LLazy Coordinator
- MySQL中concat函数