GridView 里面 九宫格,纵向的item每个宫格居中 =
GridView里面 android:gravity="center" + item里面跟布局 android:gravity="center"
(图片 文字均设置为 activity_all_classifiled.xml)
问题:通常在滑动横向的控件时如viewpager或者横向的listview亦或是最新的recycleview,都会产生稍微滑动的有偏差,会导致 scrollview的上下滑动,体验特别不佳
处理:在滑动的时候假如scrollview的上下收到了触发,则返回到子布局中去,故重写scrollview
public class MyScrollView extends ScrollView{
private float xDistance, yDistance, xLast, yLast;
public MyScrollView (Context context) {
super(context);
}
public MyScrollView (Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyScrollView (Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
/**
* X轴滑动距离大于Y轴滑动距离,也就是用户横向滑动时,返回false,ScrollView不处理这次事件,
* 让子控件中的TouchEvent去处理,所以横向滑动的事件交由ViewPager处理,
* ScrollView只处理纵向滑动事件
*/
if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
裁剪时要判断是否华为手机,因为变态华为系统底层是圆形剪切器
public void startPhotoZoom(Uri uri) {
/*
* 至于下面这个Intent的ACTION是怎么知道的,大家可以看下自己路径下的如下网页
* yourself_sdk_path/docs/reference/android/content/Intent.html
* 直接在里面Ctrl+F搜:CROP ,之前没仔细看过,其实安卓系统早已经有自带图片裁剪功能, 是直接调本地库的
/
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/");
// 下面这个crop = true是设置在开启的Intent中设置显示的VIEW可裁剪 ;crop = false为不可裁剪
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
if(Build.MODEL.contains("HUAWEI")){
intent.putExtra("aspectX", 9998);
intent.putExtra("aspectY", 9999);
} else {
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
}
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 150);
intent.putExtra("outputY", 150);
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", false);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageuri);
/* intent.putExtra(MediaStore.EXTRA_OUTPUT, imageuri);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("return-data", true);*/
startActivityForResult(intent, 3);
}
网友评论