zoukankan      html  css  js  c++  java
  • Afinal载入网络图片及下载文件用法

    Afinal高速开发框架使用起来很方便。以下将解说怎样利用Afinal载入网络图片及下载文件:

    先看效果图:


    注意:使用Afinal前需加入Afinal的jar,能够在这里下载:http://download.csdn.net/detail/baiyuliang2013/7313587

    当中包含了Afinal的源代码和jar,使用时仅仅需加入jar包就可以。在学习阶段也能够直接加入源代码到你的项目中。能够更深入的学习Afinal。


    看代码:

    activit_main.xml:

    <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=".MainActivity" >
    
        <Button
             android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下载" />
        
           <TextView
             android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/btn"
            android:text="进度:" />
        
        <ImageView 
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_centerHorizontal="true"
            android:src="@drawable/ic_launcher"
            />
    
    </RelativeLayout>
    

    MainActivity.java:

    package com.example.afinaltest;
    
    import java.io.File;
    
    import net.tsz.afinal.*;
    import net.tsz.afinal.annotation.view.ViewInject;
    import net.tsz.afinal.http.AjaxCallBack;
    import android.annotation.SuppressLint;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends FinalActivity {
    	
    	@ViewInject(id=R.id.img) ImageView img;
    	 TextView textView;
    	 Button btn;
    	FinalBitmap finalBitMap=null;
    	FinalHttp fh;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		textView=(TextView) findViewById(R.id.text);
    		btn=(Button) findViewById(R.id.btn);
    		btn.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View arg0) {
    				String apkPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/qq.apk";
    				File f = new File(apkPath);
    				if (f.exists()) {
    					f.delete();
    				}
    				fh=new FinalHttp();
    				fh.download("http://gdown.baidu.com/data/wisegame/4ae6d2d7378e6cdf/QQ_122.apk",apkPath, 
    						new AjaxCallBack<File>() {
    			       @Override
    					public void onStart() {
    						super.onStart();
    						Toast.makeText(getApplicationContext(), "開始下载", Toast.LENGTH_SHORT).show();
    					}
    					@SuppressLint("DefaultLocale")
    					@Override
    					public void onLoading(long count, long current) {
    						super.onLoading(count, current);
    						int progress=0;
    						if (current != count && current != 0) {
    							progress = (int) (current / (float) count * 100);
    						} else {
    							progress = 100;
    						}
    						textView.setText("进度:"+progress+"%");
    					}
    					@Override
    					public void onSuccess(File t) {
    						super.onSuccess(t);
    						Toast.makeText(getApplicationContext(), "下载完毕", Toast.LENGTH_SHORT).show();
    						textView.setText(t==null?"null":t.getAbsoluteFile().toString());
    					}
    					@Override
    					public void onFailure(Throwable t, int errorNo,String strMsg) {
    						super.onFailure(t, errorNo, strMsg);
    						Toast.makeText(getApplicationContext(), "下载失败", Toast.LENGTH_SHORT).show();
    					}
    				});
    			}
    		});
    		
    		finalBitMap=FinalBitmap.create(MainActivity.this);
    		
    		finalBitMap.display(img, "http://meme.zenfs.com/u/a33312d2e9eaa443321f4ec716fe795a23c27c89.jpeg");
    		
    	}
    	
    
    }
    
    能够看到。MainActivity是继承了FianlActivity,因此在初始化控件的时候。能够不用findViewById了,直接用注解的方式如:@ViewInject(id=R.id.img) ImageView img; @ViewInject(id=R.id.btn,click="onclick") Button btn;click事件仅仅需写一个相应click="onclick"的方法如:public void onclick(){}就可以。

    分析FinallyBitmap源代码可知:初始化时需调用create方法。然后再调用display(imgView,url);就可以载入网络图片。也能够设置在载入完毕前显示的图片等等,这个看下源代码便知。下载文件需用FinalHttp,并调用download方法,该例中使用download(String,String,AjaxCallBack<File>);方法。第一个參数是将要下载的文件路径。第二个參数为本地文件保存路径,第三个是一个回调函数,每隔一秒会调用一次,能够方便的查看文件下载进度以及文件下载情况如成功失败,下载完毕等,需重写onStart,onLoading,onSuccess,onFailure等方法。


    最后不要忘了在AndroidManifest.xml中加入网络訪问权限和存储卡读取及写入权限:

        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



  • 相关阅读:
    Spark Executor内存管理
    Spring中Bean的生命周期及其扩展点
    NIO非阻塞IO
    TCP,UDP和socket,Http之间联系和区别
    md5加密,md5加盐加密和解密
    线程监测方法多久没被调用
    项目部署后,替换.class文件不生效
    mysql存储过程导入表
    java生成二维码
    Map中keySet和entrySet的区别
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5079136.html
Copyright © 2011-2022 走看看