22
33import android .content .Intent ;
44import android .net .Uri ;
5+ import android .os .AsyncTask ;
56import android .os .Bundle ;
67import android .util .Log ;
78import android .view .LayoutInflater ;
1011import android .widget .Toast ;
1112
1213import com .bumptech .glide .Glide ;
14+ import com .facebook .drawee .backends .pipeline .Fresco ;
15+ import com .facebook .drawee .backends .pipeline .PipelineDraweeController ;
16+ import com .facebook .drawee .backends .pipeline .PipelineDraweeControllerBuilder ;
17+ import com .facebook .drawee .backends .pipeline .PipelineDraweeControllerFactory ;
18+ import com .facebook .drawee .interfaces .DraweeController ;
19+ import com .facebook .imagepipeline .core .ImagePipeline ;
20+ import com .facebook .imagepipeline .core .ImagePipelineConfig ;
21+ import com .facebook .imagepipeline .core .ImagePipelineFactory ;
22+ import com .facebook .imagepipeline .request .ImageRequest ;
23+ import com .facebook .imagepipeline .request .ImageRequestBuilder ;
1324import com .google .gson .Gson ;
1425import com .uis .stackview .StackLayout ;
1526import com .uis .stackview .demo .R ;
@@ -35,6 +46,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
3546 protected void onCreate (Bundle savedInstanceState ) {
3647 super .onCreate (savedInstanceState );
3748 setContentView (R .layout .activity_main );
49+ if (!Fresco .hasBeenInitialized ()) {
50+ ImagePipelineConfig config = ImagePipelineConfig .newBuilder (getApplicationContext ())
51+ .setDiskCacheEnabled (true )
52+ .setDownsampleEnabled (true )
53+ .build ();
54+ Fresco .initialize (getApplicationContext (), config );
55+ }
3856 recyclerView = findViewById (R .id .recyclerView );
3957 stackViewLayout = findViewById (R .id .stacklayout );
4058 findViewById (R .id .bt_web ).setOnClickListener (this );
@@ -43,24 +61,30 @@ protected void onCreate(Bundle savedInstanceState) {
4361 dataList = StackAdapter .initDataList (this );
4462
4563 recyclerView .setLayoutManager (new LinearLayoutManager (this ));
46- //recyclerView.setAdapter(new StackAdapter());
64+ recyclerView .setAdapter (new StackAdapter ());
65+ stackViewLayout .setStackLooper (false );
4766 stackViewLayout .setAdapter (new StackLayout .StackAdapter () {
4867 @ Override
4968 public View onCreateView (ViewGroup parent ) {
50- return LayoutInflater .from (parent .getContext ()).inflate (R .layout .item_layout ,null );
69+ return LayoutInflater .from (parent .getContext ()).inflate (R .layout .item_fresco_layout ,null );
5170 }
5271
5372 @ Override
5473 public void onBindView (View view , int position ) {
5574 StackAdapter .ViewHolder viewHolder = (StackAdapter .ViewHolder ) view .getTag ();
5675 if (viewHolder == null ) {
5776 viewHolder = new StackAdapter .ViewHolder ();
58- viewHolder .imageView = view .findViewById (R .id .imageView );
77+ viewHolder .dv = view .findViewById (R .id .imageView );
5978 view .setTag (viewHolder );
6079 }
6180 Log .e ("xx" ,"binderVH: " + position + ",data: " + new Gson ().toJson (dataList .get (position )));
62- Glide .with (view .getContext ())
63- .load (dataList .get (position ).getCoverImageUrl ()).into (viewHolder .imageView );
81+ DraweeController controller = Fresco .newDraweeControllerBuilder ()
82+
83+ .setUri (Uri .parse (dataList .get (position ).getCoverImageUrl ()))
84+ .setTapToRetryEnabled (true )
85+ .setOldController (viewHolder .dv .getController ())
86+ .build ();
87+ viewHolder .dv .setController (controller );
6488 }
6589
6690 @ Override
@@ -70,7 +94,13 @@ public int getItemCount() {
7094
7195 @ Override
7296 public void onItemDisplay (int position ) {
97+ Log .e ("xx" ,"display = " + position );
98+ }
7399
100+ @ Override
101+ public void onItemClicked (int position ) {
102+ Log .e ("xx" ,"clicked = " + position );
103+ stackViewLayout .setStackLooper (false );
74104 }
75105 });
76106 }
0 commit comments