人人范文网 范文大全

一些工作中用到的知识点总结

发布时间:2020-03-03 06:44:38 来源:范文大全 收藏本文 下载本文 手机版

一些工作中用到的知识点总结

进入公司后开始写程序,做了一个笑话软件,嵌套在浏览器中作为一个插件使用。这个应用做了不少时间,其实应用不是太难,但是自己的基础太不好,什么东西都不会写,都要查资料,耽误了大量时间,这也给了我一个教训,工作中复制代码后患无穷啊。

该应用主要包括向服务器请求数据,解析xml,后台更新ui,处理一些屏幕响应事件等操作,都是一些很基础。代码实现过程中遇到了很多问题,有的到现在还没解决,还得急需考虑研究。

问题1: 时间的格式化问题

从服务器获取的数据是“2010-03-05 14:12:36”格式的,要将其转换为比较直观的“今天 14:12” 格式,遇到问题的原因主要是对java或者android的事件转换类不熟,此问题目前已经解决

public static String getLocalTime(Context context, String time){

// 取出年月日来,比较字符串即可

String str_curTime = DateFormat.format(\"yyyy-MM-dd\",new Date()).toString();

int result = str_curTime.compareTo(time.substring(0,time.indexOf(\" \")));

if(result>0){

return context.getString(R.string.haha_yesterday)+time.substring(time.indexOf(\" \"), time.lastIndexOf(\":\"));

}else if(result==0){

return context.getString(R.string.haha_today)+time.substring(time.indexOf(\" \"), time.lastIndexOf(\":\"));

}else{

return time;

}

}

这个方法写的不够专业,但是满足了需要,网友们如果有更好的办法可以贴出来,另外一点就是推荐使用Android的DateFormat类,而不是使用java的SimpleDateFormat或是其他,Android的DateFormat类的转换效率要比java中的高很多。问题2:怎么减少ListView中的ItemView的布局层数

这个已经写过,见以前的博客, 注明:使用merge标签做为顶层标签,虽然可以减少view的层级数,但是在merge标签里设置的各种属性都不会起作用,需要在代码中设置。

问题3:中文字符设置bold格式

mPublisher = (TextView) this.findViewById(R.id.haha_publisher);

/**

* 设置中文汉字的字体为bold,在xml文件中设置TextView的textstyle=bold 仅对英文字符有效,必须使用 * 下述方法设置中文的字体为bold

* */

TextPaint tp = mPublisher.getPaint();

tp.setFakeBoldText(true);

问题4 : 一个小技巧

view的setTag方法的使用,在Adapter中,如和将数据和view绑定到一起,例如处理onClick,onItemClick事件时,有时会需要获取该itemView的各种数据,例如positon,id,text啊等等,在getView方法中setTag后,在其他地方我们就可以通过使用getTag方法将这个信息描述对象取出来,直接使用里面的数据,能够使代码变的更整洁。

问题5:异步加载图片这个实验了好几种方式,都一起说说。

第一种:

在Adapter的getView方法中,判断该view是否有drawabel,如果没有,就发送一个消息,开启一个异步任务就下载图片。

总结:这样做不好,因为ListView除了绘制当前显示界面的view之外,在上下滑动时,也会不断的调用getView方法,不断的去判断是否存在这个drawable,造成资源的浪费。此外这样可能会开启很多的异步任务,即使采用队列,也会增加不断判断这个图片是否已经下载过的成本。

第二种:

给ListView绑定scroll事件,这样做的好处是每次值加载当前界面上的几个view,而不会去下载所有的item的图片,这样的好处是节省流量,坏处是第一次加载完页面时不会去触发滚动事件,也就不会去下载第一页的图片,我更倾向于这样做,这样在加上队列,应该就很好了。

mListView.setOnScrollListener(new OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){

int count = view.getChildCount();

if(count>0){

ArrayList list = new ArrayList();

for(int index=0;index

View vi = view.getChildAt(index);

if(vi instanceof HahaItem){

HahaItem item = (HahaItem) vi;

HahaItemInfo info = (HahaItemInfo) item.getTag();

if(mAdapter.containsKey(info.userIconUrl)) continue;

list.add(item.id);

}

}

ImageLoader loader = new ImageLoader(mHandler, list);

MxTaskManager.getInstance().excuteTask(loader);

}

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

}

});

第三种:当加载玩页面的时候,开启一个线程去下载所有的图片。

在请求数据的异步任务中,解析xml文件,完成数据的封装,存储到Adapter中的集合中,并且同时存储到一个队列中,这个队列还不能是阻塞的,因为如果是阻塞的,有可能会阻塞请求数据的异步任务。同时这个队列还必须是线程安全的,否则我们自己还得自己手动的去实现同步。

使用ConcurrentLinkedQueue这个类,他自己已经实现了同步。

当将所有的数据都添加到队列后,就要去检测下载图片的异步是否已经完成,如果完成了,就开启一个新的图片下载任务,如果没有完成,他会自动的去取队列中的数据,我们不同处理,这样能够减少频繁的开启关闭线程,提高效率。

private cla ImageLoader extends MxAsyncTaskRequest {

private ConcurrentLinkedQueue queue;

public ImageLoader(Handler handler, int position) {

super(handler, GETPIC_TASKID);

}

public ImageLoader(Handler handler, ConcurrentLinkedQueue queue) {

super(handler, GETPIC_TASKID);

this.queue = queue;

}

@Override

protected void doTaskInBackground() {

while(true){

if(queue.isEmpty()){

break;

}

Log.i(tag, \"doTaskInBackground is working: size \"+queue.size());

String url = queue.poll();

Log.i(tag, \"doTaskInBackground is working: url \"+url);

try {

Drawable dw = AppUtils.loadDrawable(url);

mAdapter.mDrawableMap.put(url, dw);

} catch (IOException e) {

e.printStackTrace();

}

}

sendMeage(MSGID);

}

}

问题6:dip和px的设置?

在xml布局文件中我们既可以设置px,也可以设置dip,系统都为我们做了转换,但是在代码中怎么处理呢,很多方法都只提供了设置px的方法,例如setPadding,并没有提供设置dip的方法,按理说,应该将dip转换成px,但是转换之后,在高屏幕手机上反而出现了问题,视图变大,直接取得dimen中的数据后使用,反而不会出现任何问题,这让我很纠葛,难道方法中提供了自动转换,这个还得研究。

问题7:TextView的布局 ?

如果在TextView中显示多行文本的话,并且文本中包含数字,英文字母,就会出现排版问题,怎么解决?这里主要涉及到的类包括Paint,

breakText方法,该方法能够检测一行显示多少文字。

如何将知识运用到工作中

高中数学常用到的知识点

总结知识点

知识点总结

知识点总结

工作中的总结

工作中自我总结

徐亮亮浅谈如何将务实作风运用到实际工作中

装修中用到的龙骨总结

关于处理物业管理工作中漏水问题用到的法律解释[定稿]

一些工作中用到的知识点总结
《一些工作中用到的知识点总结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档