美文网首页
布局小技巧

布局小技巧

作者: 自然之秋 | 来源:发表于2017-07-13 17:25 被阅读17次

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);
}

相关文章

  • 布局小技巧

    GridView 里面 九宫格,纵向的item每个宫格居中 =GridView里面 android:gravity...

  • css布局和居中

    本文主要介绍了css常用的布局,居中等其他小技巧。 css布局 左右布局 利用float实现左右布局 左右模块设置...

  • 老梁教你cad 绘图改变布局背景的小技巧

    老梁教你cad 绘图改变布局背景的小技巧

  • 安卓开发要点

    掌握各种布局技巧 LinearLayout RelativeLayout 布局技巧,学会 布局嵌套 掌握重要的组...

  • 2018-06-24

    css 网页布局学习心得 1.左右布局 2.左中右布局 3.水平布局 4.垂直布局 5.其他小技巧 在浮动布局时,...

  • CSS布局与技巧

    本文将简单介绍如何使用CSS做出以下效果: 左右布局 左中右布局 水平居中 垂直居中 其他小技巧 一、左右布局 左...

  • CSS布局&小技巧

    左右布局 1、行内元素:对父元素设置text-align:left / right2、固定宽度的块元素:第一种方法...

  • 小程序布局技巧

    弹性盒子: display:flex 弹性盒子属性flex-direction flex-direction:co...

  • CSS布局小技巧

    1.让元素水平垂直居中 文字水平垂直居中 2.让元素垂直居中 2.1 flex方式 2.2 position方式 ...

  • XML布局小技巧

    一、前言: 我们开发时接触最多的就是xml布局了,还记得我们写Android的第一个Hello World吗,就是...

网友评论

      本文标题:布局小技巧

      本文链接:https://www.haomeiwen.com/subject/infghxtx.html