将流转化成字符串:
public class Utils {
public static String getutls(InputStream inputStream){
try {
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
byte[] by=new byte[1024];
int len=0;
while((len=inputStream.read(by))!=-1){
outputStream.write(by,0,len);
}
return outputStream.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
ImageLoaderConfiguration aDefault = ImageLoaderConfiguration.createDefault(this);
ImageLoader.getInstance().init(aDefault);
配置缓存图片到sd上面:
MyApplocation extends Application {
@Override
public void onCreate() {
super.onCreate();
//缓存路径到sd卡上
File cachdir= StorageUtils.getOwnCacheDirectory(this, Environment.getExternalStorageDirectory().getPath());
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
.threadPoolSize(3)//配置的数量
.memoryCache(new LruMemoryCache(2*1024*1024))//内存缓存图片 2M
.diskCache(new UnlimitedDiskCache(cachdir))//配置sd的缓存路径
.diskCacheSize(50*1024*1024)//sd上缓存50m的图片
.diskCacheFileCount(100)//缓存文件的数量 100个
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.build();
//配置缓存选项
ImageLoader.getInstance().init(configuration);
}
}
//缓存图片
ImageLoader.getInstance().displayImage(list.get(position).getMiddle_image().getUrl_list(),image1,options);
public class MyBaseAdapter extends BaseAdapter {
private Context context;
private List
}
将网络图片数据缓存到sd上即使没有网,也可以用:
if (code==200){
InputStream inputStream = connection.getInputStream();
String json = User.getutils(inputStream);
//将网络图片数据缓存到sd上即使没有网,数据库 sharedperferenced
File file=new File(Environment.getExternalStorageDirectory(),”mein.txt”);
if (!file.exists()){
OutputStream os=new FileOutputStream(file);
os.write(json.getBytes());
//关闭流
inputStream.close();
os.close();
}
return json;
压缩图片:
nputStream inputStream = connection.getInputStream();
//转换为图片
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
//压缩
BitmapFactory.Options options=new BitmapFactory.Options();
//放弃对图片数据的解析,只获取他的宽高
options.inJustDecodeBounds=true;
options.inSampleSize=8;//计算采样率
//真正的去解析
options.inJustDecodeBounds=false;
bitmap= BitmapFactory.decodeStream(inputStream);//这样才真正的去压缩图片了。
return bitmap;
ViewPager实现轮播:
public class MainActivity extends AppCompatActivity {
private List<String> list;
private ViewPager vp;
private int iunto=33;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
vp.setCurrentItem(iunto);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
list = new ArrayList<>();
list.add("http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg");
list.add("http://pic8.nipic.com/20100701/5290458_114840036316_2.jpg");
list.add("http://a0.att.hudong.com/15/08/300218769736132194086202411_950.jpg");
vp.setAdapter(new MyAdapter());
LUNBO();
}
private void LUNBO() {
new Thread(){
@Override
public void run() {
super.run();
while (true){
SystemClock.sleep(3000);
iunto++;
handler.sendEmptyMessage(0);
}
}
}.start();
}
class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//执行网络加载
final ImageView image=new ImageView(MainActivity.this);
//执行图片加载操作
new ImageAsyncTask(new ImageAsyncTask.Task() {
@Override
public void task(Bitmap bitmap) {
image.setImageBitmap(bitmap);
}
}).execute(list.get(position%list.size()));//取出图片地址
container.addView(image);
return image;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
}
ImageAcyncTask继承AsyncTask
}
创建BaseAdapter适配器上拉和下拉多条目数据:
在public class MyBaseAdapter extends BaseAdapter {里面写
/**
* 加载更多数据
*/
public void addMore(List
——————————————-
—————————————
得到手机号码归属地websering:
public class There extends AppCompatActivity {
private EditText edphone;
private TextView tv_there;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.there);
edphone = (EditText) findViewById(R.id.edphone);
tv_there = (TextView) findViewById(R.id.tv);
}
public void but_ChaXun(View view) {
new Thread(){
@Override
public void run() {
super.run();
String phone=edphone.getText().toString();
final String phone1 = getPhone(phone);//得到号码归属地
runOnUiThread(new Runnable() {//主线程更新
@Override
public void run() {
tv_there.setText(phone1);
}
});
}
}.start();
}
//查询获得数据
private String getPhone(String phone) {
String url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx";
String name_url = "http://WebXml.com.cn/";
String method_name = "getMobileCodeInfo";
try {
//获得协议版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
SoapObject soapObject = new SoapObject(name_url, method_name);
soapObject.addProperty("mobileCode", phone);
//存回去
envelope.bodyOut = soapObject;
//设置跨平台的兼容性
envelope.dotNet = true;
//建立连接
HttpTransportSE httpTransportSE = new HttpTransportSE(url);
//发送请求
httpTransportSE.call(name_url + method_name, envelope);
//判断请求是否发送成功
if (envelope.getResponse() != null) {
SoapObject object = (SoapObject) envelope.bodyIn;
String local = object.getProperty("getMobileCodeInfoResult").toString();
System.out.println("手机号码归属地:" + object.toString());
return local;
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
e.printStackTrace();
}
return "";
}
}
使用异步任务类进行网络请求new AsyncTask
}
RunOnUIThread:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.textView1);
}
public void mclick(View v){
/*long count=0;
//模拟一个耗时操作
for(int i=0;i<Integer.MAX_VALUE;i++){
count++;
// Log.d(“zzz”, “count:”+count);
}*/
showresult();
}
public void mmclick(View v){
Toast.makeText(this, "哈哈!", 0).show();
}
public void showresult(){
new Thread(){
long count=0;
public void run() {
//模拟一个耗时操作
for(int i=0;i<Integer.MAX_VALUE;i++){
count++;
Log.d("zzz", "count:"+count);
if(count==5000){
break;
}
}
runOnUiThread(new Runnable(){
@Override
public void run() {
//直接更新UI的代码
tv.setText(count+"");
}});
/*tv.post(new Runnable(){
@Override
public void run() {
//直接更新UI的代码
tv.setText(count+"");
}});*/
};
}.start();