注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

罔少年

QQ 332256483

 
 
 

日志

 
 

解决ScrollView 与 Gallery 冲突  

2013-12-02 09:05:03|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在ScrollView 中 嵌套了一个Gallery 
需要左右滑动切换图片,上下滑动显示内容(如下图)
解决ScrollView 与 Gallery 冲突 - lanaiver6291 - lanaiver6291的博客
 
问题1描述,左右滑动图片是,报错
解决方法:重写Galery 在xml布局文件中,Galery继承TestGallery

package com.mmz.control;

import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.Gallery;

public class TestGallery extends Gallery{
private float gTouchStartX;
private float gTouchStartY;
public TestGallery(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public TestGallery(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TestGallery(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
int action = ev.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
gTouchStartX = ev.getX();
gTouchStartY = ev.getY();
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
final float touchDistancesX = Math.abs(ev.getX()-gTouchStartX);
final float touchDistancesY = Math.abs(ev.getY()-gTouchStartY);
if(touchDistancesY *2 >= touchDistancesX){
return false;
}else{
return true;
}
case MotionEvent.ACTION_CANCEL:
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if(e2.getX() > e1.getX()){
onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null);
}else{
onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
}
return false;
}
}


问题2:发现如果图片过大,左右滑动会报内存溢出错误
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
解决:在Adapter的getView()中 
holder.img.setImageBitmap(big1((Integer)dataList.get(position).get("img")));

private Bitmap big1(int drawable) {
Resources res = getResources();
Bitmap bmp = BitmapFactory.decodeResource(res, drawable);
BitmapDrawable bd= new BitmapDrawable(res, bmp);
double width = bd.getIntrinsicWidth();
double height = bd.getIntrinsicHeight();

int width1 = bd.getIntrinsicWidth();
int height1 = bd.getIntrinsicHeight();
double sjw= tarHeigth;
double sjh= tarHeigth;
Matrix matrix = new Matrix();
float sx = (float) ((float)sjw/width);
float sy = (float) ((float)sjh/height);
matrix.postScale(sx,sy); //长和宽放大缩小的比例
Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,width1,height1,matrix,true);
return resizeBmp;
}


  评论这张
 
阅读(373)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018