GridView 里面 九宮格兢仰,縱向的item每個(gè)宮格居中 =
GridView里面 android:gravity="center" + item里面跟布局 android:gravity="center"
(圖片 文字均設(shè)置為 activity_all_classifiled.xml)
問題:通常在滑動橫向的控件時(shí)如viewpager或者橫向的listview亦或是最新的recycleview产阱,都會產(chǎn)生稍微滑動的有偏差,會導(dǎo)致 scrollview的上下滑動,體驗(yàn)特別不佳
處理:在滑動的時(shí)候假如scrollview的上下收到了觸發(fā),則返回到子布局中去空免,故重寫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軸滑動距離紫皇,也就是用戶橫向滑動時(shí)慰安,返回false,ScrollView不處理這次事件聪铺,
* 讓子控件中的TouchEvent去處理化焕,所以橫向滑動的事件交由ViewPager處理,
* ScrollView只處理縱向滑動事件
*/
if (xDistance > yDistance) {
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}
裁剪時(shí)要判斷是否華為手機(jī)铃剔,因?yàn)樽儜B(tài)華為系統(tǒng)底層是圓形剪切器
public void startPhotoZoom(Uri uri) {
/*
* 至于下面這個(gè)Intent的ACTION是怎么知道的撒桨,大家可以看下自己路徑下的如下網(wǎng)頁
* yourself_sdk_path/docs/reference/android/content/Intent.html
* 直接在里面Ctrl+F搜:CROP ,之前沒仔細(xì)看過键兜,其實(shí)安卓系統(tǒng)早已經(jīng)有自帶圖片裁剪功能, 是直接調(diào)本地庫的
/
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/");
// 下面這個(gè)crop = true是設(shè)置在開啟的Intent中設(shè)置顯示的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);
}