SwipeRefreshLayout下拉刷新冲突解决(转)

原文:http://my.oschina.net/djone/blog/408110
使用SwipeRefreshLayout,网上资料copy了一个OnScrollListener给ListView,

结果当第一个item长度超过一屏,明明还没有到达列表顶部,Scroll事件就被拦截,列表无法滚动,同时启动了刷新。
修正代码后,自定义的OnScrollListener如下:

/** 由于Listview与下拉刷新的Scroll事件冲突, 使用这个ScrollListener可以避免Listview滑动异常 */
public static class SwpipeListViewOnScrollListener implements AbsListView.OnScrollListener {

private SwipeRefreshLayout mSwipeView;
private AbsListView.OnScrollListener mOnScrollListener;

public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView) {
mSwipeView = swipeView;
}

public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView,
OnScrollListener onScrollListener) {
mSwipeView = swipeView;
mOnScrollListener = onScrollListener;
}

@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}

@Override
public void onScroll(AbsListView absListView, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
View firstView = absListView.getChildAt(firstVisibleItem);

// 当firstVisibleItem是第0位。如果firstView==null说明列表为空,需要刷新;或者top==0说明已经到达列表顶部, 也需要刷新
if (firstVisibleItem == 0 && (firstView == null || firstView.getTop() == 0)) {
mSwipeView.setEnabled(true);
} else {
mSwipeView.setEnabled(false);
}
if (null != mOnScrollListener) {
mOnScrollListener.onScroll(absListView, firstVisibleItem,
visibleItemCount, totalItemCount);
}
}
}

Android WebView自定义处理错误页面显示(404等)

关键代码以下:

  @Override  
public void onReceivedError(WebView view, int errorCode,  
  String description, String failingUrl) {  
    //用javascript隐藏系统定义的404页面信息  
  String data = "Page NO FOUND!";  
view.loadUrl("javascript:document.body.innerHTML=\\""+data+"\\"");  
}




出处:http://blog.csdn.net/feifei454498130/article/details/23627557

主要是在WebViewClient里,重载OnReceivedError的方法,然后通过javascript操作dom去改变内容。

而网上大多数的处理方式是view.loadUrl(指向一个assets目录下的html文件或者"about:blank"),这样处理的话,在重新刷新时就会刷新当前这个错误的页面,或者在处理goBack()时候会出现一些问题。而通过以上方式则可以避免相应的问题。

用代码为TextView设置drawable

用代码为TextView,Button 等设置drawableLeft,drawableRight,drawableTop,drawableBottom

以drawableLeft为例:

解决方案:

[codesyntax lang="java" container="none" tab_width="4"]

public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);

类似调用方法如下:

1.在XML中使用 android:drawableLeft="@drawable/icon"

2.代码中动态变化 Drawable drawable= getResources().getDrawable(R.drawable.drawable);

/// 这一步必须要做,否则不会显示.

drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); myTextview.setCompoundDrawables(drawable,null,null,null);

也或参考另一个函数

public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom) [/codesyntax]

参考网址:http://bbs.csdn.net/topics/390383463

lantern-Google官方科学上网工具下载[附AS等开发工具代理使用方法]

使用方法:

代理地址:127.0.0.1
代理端口:8787

SDK Magager:



打开 Tools--Options
HTTP Proxy Server和Http Proxy Port 分别填地址和端口
不需要勾选 Force https://... source to be fenched using http://...
然后关闭并重新打开SDKManager

Android Studio:



打开setting--System Setting--HTTP Proxy
找到Manual proxy configuration 选中HTTP[貌似只能用HTTP] 然后HostName和Portnumber 分别填地址和端口即可

其他软件类似 只要设置地址和端口就可以了

---------------说明----------------------
在lantern 的安装目录里发现
lantern-2.0.10.yaml文件内容含有
addr: 127.0.0.1:8787和uiaddr: 127.0.0.1:16823
经查看IE的代理方式默认使用的是127.0.0.1:16823+pac的代理
所以觉得可能addr: 127.0.0.1:8787是有其他用处的
经试验证明 这个addr: 127.0.0.1:8787可以用来做端口代理

下载地址:(请使用右键目标另存为...)

高德地图设置缩放级别

不得不说高德地图做的不够直接,找了好久才找到的

//生成相机移动对象数据,这个CameraUpdateFactory是个工厂类,负责生成相机更新数据[个人理解,更多请参考官方文档]
CameraUpdate cu = CameraUpdateFactory.zoomTo(16);//只所放到16级别 其他参数不变

aMap.moveCamera(cu);//通过移动相机更改地图缩放级别

至此就可以实现设置地图的缩放级别了

注:aMap = mapView.getMap();