Android开发中15条小经验(1)

如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点 (x+toXDelta,y+toYDelta)点.

**7.**android提供了几种在其他线程中访问UI线程的方法。

Activity.runOnUiThread( Runnable )

View.post( Runnable )

View.postDelayed( Runnable, long )

从网上获取一个网页,在一个TextView中将其源代码显示出来

packageorg.unique.async;

importjava.io.ByteArrayOutputStream;

importjava.io.InputStream;

importjava.util.ArrayList;

importorg.apache.http.HttpEntity;

importorg.apache.http.HttpResponse;

importorg.apache.http.client.HttpClient;

importorg.apache.http.client.methods.HttpGet;

importorg.apache.http.impl.client.DefaultHttpClient;

importandroid.app.Activity;

importandroid.app.ProgressDialog;

importandroid.content.Context;

importandroid.content.DialogInterface;

importandroid.os.AsyncTask;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.os.Message;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.TextView;

publicclassNetworkActivityextendsActivity{

privateTextViewmessage;

privateButtonopen;

privateEditTexturl;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.network);

message=(TextView)findViewById(R.id.message);

url=(EditText)findViewById(R.id.url);

open=(Button)findViewById(R.id.open);

open.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewarg0){

connect();

}

});

}

privatevoidconnect(){

PageTasktask=newPageTask(this);

task.execute(url.getText().toString());

}

classPageTaskextendsAsyncTask<String,Integer,String>{

//可变长的输入参数,与AsyncTask.exucute()对应

ProgressDialogpdialog;

publicPageTask(Contextcontext){

pdialog=newProgressDialog(context,0);

pdialog.setButton(“cancel”,newDialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,inti){

dialog.cancel();

}

});

pdialog.setOnCancelListener(newDialogInterface.OnCancelListener(){

publicvoidonCancel(DialogInterfacedialog){

finish();

}

});

pdialog.setCancelable(true);

pdialog.setMax(100);

pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pdialog.show();

}

@Override

protectedStringdoInBackground(String…params){

try{

HttpClientclient=newDefaultHttpClient();

//params[0]代表连接的url

HttpGetget=newHttpGet(params[0]);

HttpResponseresponse=client.execute(get);

HttpEntityentity=response.getEntity();

longlength=entity.getContentLength();

InputStreamis=entity.getContent();

Strings=null;

if(is!=null){

ByteArrayOutputStreambaos=newByteArrayOutputStream();

byte[]buf=newbyte[128];

intch=-1;

intcount=0;

while((ch=is.read(buf))!=-1){

baos.write(buf,0,ch);

count+=ch;

if(length>0){

//如果知道响应的长度,调用publishProgress()更新进度

publishProgress((int)((count/(float)length)*100));

}

//让线程休眠100ms

Thread.sleep(100);

}

s=newString(baos.toByteArray());

}

//返回结果

returns;

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

}

@Override

protectedvoidonCancelled(){

super.onCancelled();

}

@Override

protectedvoidonPostExecute(Stringresult){

//返回HTML页面的内容

message.setText(result);

pdialog.dismiss();

}

@Override

protectedvoidonPreExecute(){

//任务启动,可以在这里显示一个对话框,这里简单处理

message.setText(R.string.task_started);

}

@Override

protectedvoidonProgressUpdate(Integer…values){

//更新进度

System.out.println(“”+values[0]);

message.setText(“”+values[0]);

pdialog.setProgress(values[0]);

}

}

}

**8.**Spinner不能用在dialog 和 tabhost中的解决办法

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;

技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关

在这我也分享一份大佬自己收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

相信自己,没有做不到的,只有想不到的

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

[外链图片转存中…(img-Qb1qMa63-1713251636243)]

[外链图片转存中…(img-wTbKVqtu-1713251636244)]

相信自己,没有做不到的,只有想不到的

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值