移动互联总结

Handler的发送消息方法
在主线程中可以通过Message msg = Message.obtain();来获取消息池中的消息对象,减小内存消耗,这个msg可以设置what标记,也可以设置对象
Obtain,获得的意思,就是获取消息池中的消息对象,
Message msg = Message.obtain();
msg.obj = Object;
msg.what = SUCCESS;
handler.sendMessage(msg);
然后发送这个消息


还有一种简单的方法
handler.obtainMessage(what, obj).sendToTarget();
先获取消息池消息,然后直接传参数进去,然后发送到目标

网络地址改UTF-8
String name = URLEncoder.encode(string, “utf-8”);
要通过URLEncoder把字符串转成网络地址栏中的utf-8格式,

TabPageIndicator的应用
这是结合viewPager的一个插件,联动
首先要把library导到eclipse中,然后本项目关联这个library
如果报错的话是v4包重复,只要把本工程中的v4包删除就行,
然后要在配置文件中给activity设置一个主题

事件处理机制

ViewPager套viewPager出现的问题
//给当前vp设置一个触摸监听
book_vp.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

//如果按起的时候,取消请求驳回拦截,也就是把父控件的拦截给开启,子空间不再能够执行
if(event.getAction()==MotionEvent.ACTION_UP){
book_vp.getParent().requestDisallowInterceptTouchEvent(false);
}else{
//如果是其他状态,请求驳回拦截设为true,也就是不让父控件拦截这子控件的事件
book_vp.getParent().requestDisallowInterceptTouchEvent(true);
}
return false;
}
});
Touch 事件分析
▐ 事件分发:public boolean dispatchTouchEvent(MotionEvent ev)
Touch 事件发生时 Activity 的 dispatchTouchEvent(MotionEvent ev) 方法会以隧道方式(从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递)将事件传递给最外层 View 的 dispatchTouchEvent(MotionEvent ev) 方法,并由该 View 的 dispatchTouchEvent(MotionEvent ev) 方法对事件进行分发。dispatchTouchEvent 的事件分发逻辑如下:
如果 return true,事件会分发给当前 View 并由 dispatchTouchEvent 方法进行消费,同时事件会停止向下传递;
如果 return false,事件分发分为两种情况:
1.如果当前 View 获取的事件直接来自 Activity,则会将事件返回给 Activity 的 onTouchEvent 进行消费;
2.如果当前 View 获取的事件来自外层父控件,则会将事件返回给父 View 的 onTouchEvent 进行消费。
如果返回系统默认的 super.dispatchTouchEvent(ev),事件会自动的分发给当前 View 的 onInterceptTouchEvent 方法。
▐ 事件拦截:public boolean onInterceptTouchEvent(MotionEvent ev)
在外层 View 的 dispatchTouchEvent(MotionEvent ev) 方法返回系统默认的 super.dispatchTouchEvent(ev) 情况下,事件会自动的分发给当前 View 的 onInterceptTouchEvent 方法。onInterceptTouchEvent 的事件拦截逻辑如下:
如果 onInterceptTouchEvent 返回 true,则表示将事件进行拦截,并将拦截到的事件交由当前 View 的 onTouchEvent 进行处理;
如果 onInterceptTouchEvent 返回 false,则表示将事件放行,当前 View 上的事件会被传递到子 View 上,再由子 View 的 dispatchTouchEvent 来开始这个事件的分发;
如果 onInterceptTouchEvent 返回 super.onInterceptTouchEvent(ev),事件默认会被拦截,并将拦截到的事件交由当前 View 的 onTouchEvent 进行处理。
▐ 事件响应:public boolean onTouchEvent(MotionEvent ev)
在 dispatchTouchEvent 返回 super.dispatchTouchEvent(ev) 并且 onInterceptTouchEvent 返回 true 或返回 super.onInterceptTouchEvent(ev) 的情况下 onTouchEvent 会被调用。onTouchEvent 的事件响应逻辑如下:
如果事件传递到当前 View 的 onTouchEvent 方法,而该方法返回了 false,那么这个事件会从当前 View 向上传递,并且都是由上层 View 的 onTouchEvent 来接收,如果传递到上面的 onTouchEvent 也返回 false,这个事件就会“消失”,而且接收不到下一次事件。
如果返回了 true 则会接收并消费该事件。
如果返回 super.onTouchEvent(ev) 默认处理事件的逻辑和返回 false 时相同。
参考网站:http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.html

ImageLoader的使用配置

先创建一个ImageLoaderUtils,工具类,这个工具类有两个静态方法,一个初始化ImageLoader的方法,一个是设置显示图片设置的方法,返回一个显示图片选项的对象,就像是一个模板,让所有图片都运用这个选项设置.
★★★★第一步:
//创建ImageLoderUtils类,创建两个静态方法
public class ImageLoderUtils {
//创建初始化ImageLoader的方法,
public static void initConfiguration(Context context){
//创建一个配置对象
Builder configuration = new ImageLoaderConfiguration.Builder(context);

//获取ImageLoader实例,并初始化配置
ImageLoader.getInstance().init(configuration.build());
}
//这个是显示图片选项的方法,返回一个选项对象,统一设置图片,
public static DisplayImageOptions initOptions(){
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.drawable.ic_launcher)
.showImageOnFail(R.drawable.ic_launcher)
.cacheInMemory(true)
.cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).build();
return options;
}
}
★★★★第二步:
创建一个自定义的Application对象,MyApplication,然后,在oncreate方法中初始化ImageLoader
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoderUtils.initConfiguration(getApplicationContext());
}
}
上拉加载,下拉刷新的使用

Xutils的使用,

断点续传原理

自定义监听器
先在该类中设定一个接口,提供一个方法,因为具体什么操作还不确定,所以要定义接口,
然后定义一个方法,里面有一个接口对象的形参,然后把这个形参设置为全局,用这个形参去调用这个方法,把想传的方法传送过去,就等于预知了这个方法,等着其他监听了这个类的动作,如果这个类调用了这个方法,就会调用未知类,实现了这个接口,并重写了这个方法的类,去给他传值,调用其中的方法,这就提高了,这个参数的可利用性,可以利用这个参数实现各种功能.
例如:在Fragment0中:
首先,创建一个接口,定义一个方法,其他类会实现这个接口,并重写这个方法,利用里面的形参,实现功能
public interface OnListViewClickListener{
void setOnItemClicked(String text);
}
其次,其他类调用这个方法,里面传入一个接口对象,设置成全局的,这样本类就可以在合适的位置用到这个其他类实现的具体对象,实例对象,从而调用他重写的方法
public void setOnListViewClickListener(OnListViewClickListener listViewClickListener){
this.listViewClickListener=listViewClickListener;
}
这里是在点击lv的条目后,这个listListener就是传过来的对象,如果点击
条目,就接收到了这个对象,然后调用里面重写好的方法,传入相传的实际参数,实现其他类的功能,
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView

小点:

设置字体颜色
Color.XXX
Color.parseColor(“#1565132”);
android.R.color.holo_orange_dark

关键字高亮
Str关键字,给那个文本设置修改后的文本,string是总字符串
private void setTextColor(final String str, TextView title,
String string) {
SpannableStringBuilder builder = new SpannableStringBuilder(string);
ForegroundColorSpan span = new ForegroundColorSpan(Color.parseColor(“#FFA500”));
int start=string.toUpperCase().indexOf(str.toUpperCase());
int end=start+str.length();
builder.setSpan(span, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
title.setText(builder);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值