精华内容
下载资源
问答
  • 简单记录下今天做的自定义字体大小修改的功能需求:添加具体字体自定义大小功能、不需要跟随系统字体大小改变改变1.首先看一下用到的调节字体大小的控件:字体大小调节页控件继承自系统的SeekBar,添加了刻度、...

    简单记录下今天做的自定义字体大小修改的功能

    需求:添加具体字体自定义大小功能、不需要跟随系统字体大小改变而改变

    1.首先看一下用到的调节字体大小的控件:

    5ddcdd7ad81d

    字体大小调节页

    控件继承自系统的SeekBar,添加了刻度、文字

    代码如下:

    /**

    * Des:

    * Created by kele on 2020/9/30.

    * E-mail:984127585@qq.com

    */

    public class RaeSeekBar extends AppCompatSeekBar {

    // 刻度说明文本,数组数量跟刻度数量一致,跟mTextSize的长度要一致

    private String[] mTickMarkTitles = new String[]{

    "A",

    "标准",

    "",

    "A"

    };

    // 刻度代表的字体大小

    private float[] mTextSize = new float[]{

    0.8f,

    1.0f,

    1.15f,

    1.3f

    };

    // 刻度画笔

    private final Paint mTickMarkTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);

    //文本画笔

    private final Paint mTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);

    // 刻度文本字体大小

    private float mTickMarkTitleTextSize = 18;

    // 刻度文本跟刻度之间的间隔

    private float mOffsetY = 40;

    // 刻度线的高度

    private int mLineHeight = 10;

    // 保存位置大小信息

    private final Rect mRect = new Rect();

    private int mThumbHeight;

    private int mThumbWidth;

    public RaeSeekBar(Context context) {

    this(context, null);

    }

    public RaeSeekBar(Context context, AttributeSet attrs) {

    this(context, attrs, 0);

    }

    public RaeSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {

    super(context, attrs, defStyleAttr);

    init();

    }

    protected void init() {

    mTickMarkTitleTextSize = getSize(mTickMarkTitleTextSize);

    mOffsetY = getSize(mOffsetY);

    mLineHeight = getSize(mLineHeight);

    mTickMarkTitlePaint.setTextAlign(Paint.Align.CENTER);

    mTickMarkTitlePaint.setColor(ContextCompat.getColor(getContext(), R.color.color_66989FC3));

    mTitlePaint.setTextAlign(Paint.Align.CENTER);

    mTitlePaint.setColor(ContextCompat.getColor(getContext(), R.color.color_303132));

    }

    @Override

    protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);

    int max = getMax();

    int width = canvas.getWidth();

    int height = canvas.getHeight();

    int h2 = height / 2;

    // 画刻度背景

    mRect.left = getPaddingLeft();

    mRect.right = width - getPaddingRight();

    mRect.top = h2 - getSize(1);

    mRect.bottom = mRect.top + getSize(1.0f);

    canvas.drawRect(mRect, mTickMarkTitlePaint);

    int cw = mRect.right - mRect.left; // 总画线的长度 = 右边坐标 - 左边坐标

    for (int i = 0; i <= max; i++) {

    // 每个间隔的大小

    int thumbPos = getPaddingLeft() + (cw * i / max);

    // 画分割线

    mRect.top = h2 - mLineHeight / 2;

    mRect.bottom = h2 + mLineHeight / 2;

    mRect.left = thumbPos;

    mRect.right = thumbPos + getSize(1.0f);

    canvas.drawRect(mRect, mTickMarkTitlePaint);

    // 画刻度文本

    String title = mTickMarkTitles[i % mTickMarkTitles.length];

    mTitlePaint.getTextBounds(title, 0, title.length(), mRect);

    mTitlePaint.setTextSize(mTextSize[i] * mTickMarkTitleTextSize);

    canvas.drawText(title, thumbPos, mTextSize[mTextSize.length - 1] * mTickMarkTitleTextSize, mTitlePaint);

    }

    }

    @Override

    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    mThumbWidth = getThumb().getIntrinsicWidth();

    mThumbHeight = getThumb().getIntrinsicHeight();

    // 加上字体大小

    int wm = MeasureSpec.getMode(widthMeasureSpec);

    int hm = MeasureSpec.getMode(heightMeasureSpec);

    int w = getMeasuredWidth();

    int h = getMeasuredHeight();

    h += mTextSize[mTextSize.length - 1] * mTickMarkTitleTextSize; // 最大的字体

    h += mOffsetY;

    // 保存

    setMeasuredDimension(MeasureSpec.makeMeasureSpec(w, wm), MeasureSpec.makeMeasureSpec(h, hm));

    }

    protected int getSize(float size) {

    return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, getResources().getDisplayMetrics());

    }

    public float getRawTextSize(int progress) {

    return mTextSize[progress % mTextSize.length];

    }

    public void setTextSize(float size) {

    for (int i = 0; i < mTextSize.length; i++) {

    float textSize = mTextSize[i];

    if (textSize == size) {

    setProgress(i);

    break;

    }

    }

    }

    }

    2.RaeSeekBar控件的具体使用

    代码如下:

    RaeSeekBar raeSeekBar = findViewById(R.id.rae_seek_bar);

    scalaSize = SPUtils.getInstance().getFloat(SPConfig.FONT_SIZE_SCALE, 1.0f);

    setTvSize(scalaSize);

    raeSeekBar.setTextSize(scalaSize);

    raeSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

    @Override

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

    scalaSize = raeSeekBar.getRawTextSize(progress);

    setTvSize(scalaSize);

    }

    @Override

    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override

    public void onStopTrackingTouch(SeekBar seekBar) {

    }

    });

    3.实现部分界面的字体大小的修改

    先看看修改字体大小代码,如下:

    /**

    * 修改字体大小

    *

    * @param spKey

    */

    protected void changeFontSize(String spKey) {

    float scale = 1.0f;

    Configuration c = getResources().getConfiguration();

    if (!TextUtils.isEmpty(spKey)) {

    scale = SPUtils.getInstance().getFloat(spKey, 1.0f);

    }

    c.fontScale = scale;

    // DisplayMetrics metrics = new DisplayMetrics();

    // getWindowManager().getDefaultDisplay().getMetrics(metrics);

    // metrics.scaledDensity = c.fontScale * metrics.density;

    getResources().updateConfiguration(c, getResources().getDisplayMetrics());

    }

    修改字体大小的代码放在BaseActivity中

    在onCreate中调用changeFontSize(null);,即:

    /**

    * 是否需要重置字体大小

    * 只有在需要调节字体大小的界面不需要重置,其他的均需要重置

    */

    protected boolean isNeedResetFontSize = true;

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

    BarUtils.setStatusBarColor(this, getResources().getColor(R.color.color_translation));

    BarUtil.getInstance().setStatusBarFontIconDark(this, false);

    if (isNeedResetFontSize) {

    changeFontSize(null);

    }

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_base);

    }

    在需要字体大小改变的页面onCreate中调用changeFontSize("你保存的修改后的字体的倍数对应的SP中的Key");,例如:

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

    isNeedResetFontSize = false;

    changeFontSize(SPConfig.FONT_SIZE_SCALE);

    super.onCreate(savedInstanceState);

    }

    到这里修改字体的工作基本上算是完了

    但是

    修改系统字体大小后会发现自己修改的字体的大小是累加在修改后的系统字体大小之上的

    4.禁止APP的字体大小跟随系统字体大小改变而改变

    1.Application中重写getResources方法:

    /**

    * 重写 getResource 方法,防止系统字体影响

    */

    @Override

    public Resources getResources() {//禁止app字体大小跟随系统字体大小调节

    Resources resources = super.getResources();

    if (resources != null && resources.getConfiguration().fontScale != 1.0f) {

    android.content.res.Configuration configuration = resources.getConfiguration();

    configuration.fontScale = 1.0f;

    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    }

    return resources;

    }

    2.BaseActivity中重写getResources方法:

    /**

    * 重写 getResource 方法,防止系统字体影响

    */

    @Override

    public Resources getResources() {//禁止app字体大小跟随系统字体大小调节

    Resources resources = super.getResources();

    if (isNeedResetFontSize) {

    if (resources != null && resources.getConfiguration().fontScale != 1.0f) {

    android.content.res.Configuration configuration = resources.getConfiguration();

    configuration.fontScale = 1.0f;

    resources.updateConfiguration(configuration, resources.getDisplayMetrics());

    }

    }

    return resources;

    }

    参考链接

    补充(201009)

    上面的代码在红米3开发版手机上的效果不理想,如下图:

    5ddcdd7ad81d

    红米3开发版手机效果

    图中SeekBar设置的thumb图片跑到了刻度上方

    看了下源码(AbsSeekBar.java:732行):

    /**

    * Draw the thumb.

    */

    void drawThumb(Canvas canvas) {

    if (mThumb != null) {

    final int saveCount = canvas.save();

    // Translate the padding. For the x, we need to allow the thumb to

    // draw in its extra space

    canvas.translate(mPaddingLeft - mThumbOffset, mPaddingTop);

    mThumb.draw(canvas);

    canvas.restoreToCount(saveCount);

    }

    }

    源码中画thumb是通过padding值来确定位置的,所以,通过设置padding来适配红米3,代码修改如下:

    @Override

    protected void onDraw(Canvas canvas) {

    Drawable thumb = getThumb();

    int max = getMax();

    int width = canvas.getWidth();

    int height = canvas.getHeight();

    int h2 = height / 2;

    boolean xiaomi = RomUtils.isXiaomi();

    if (xiaomi) {

    setPadding(getPaddingLeft(), (height - thumb.getIntrinsicHeight()) / 2, getPaddingRight(), getPaddingBottom());

    }

    super.onDraw(canvas);

    // 画刻度背景

    mRect.left = getPaddingLeft();

    mRect.right = width - getPaddingRight();

    mRect.top = h2 - getSize(1);

    mRect.bottom = mRect.top + getSize(1.0f);

    canvas.drawRect(mRect, mTickMarkTitlePaint);

    int cw = mRect.right - mRect.left; // 总画线的长度 = 右边坐标 - 左边坐标

    for (int i = 0; i <= max; i++) {

    // 每个间隔的大小

    int thumbPos = getPaddingLeft() + (cw * i / max);

    // 画分割线

    mRect.top = h2 - mLineHeight / 2;

    mRect.bottom = h2 + mLineHeight / 2;

    mRect.left = thumbPos;

    mRect.right = thumbPos + getSize(1.0f);

    canvas.drawRect(mRect, mTickMarkTitlePaint);

    // 画刻度文本

    String title = mTickMarkTitles[i % mTickMarkTitles.length];

    mTitlePaint.getTextBounds(title, 0, title.length(), mRect);

    mTitlePaint.setTextSize(mTextSize[i] * mTickMarkTitleTextSize);

    canvas.drawText(title, thumbPos, mTextSize[mTextSize.length - 1] * mTickMarkTitleTextSize, mTitlePaint);

    }

    }

    展开全文
  • 图片轮播(现在手机app上常见的)

    千次阅读 2019-08-19 23:40:33
    效果:占全屏的 每个图片中间有间距 触摸滑动时 边滑边动 滑动规定的范围才让图片改变 没达到那个范围就依然是当前的图片 这个是js代码 $(function () { var count = 0; var time = null; var is = false; ...

    效果:占全屏的 每个图片中间有间距 触摸滑动时 边滑边动 滑动规定的范围才让图片改变 没达到那个范围就依然是当前的图片
    这个是js代码

    
    
    $(function () {
        var count = 0;
        var time = null;
        var is = false;
        time = setInterval(t, 1000);
        function t() {
            is = true;
            count++;
    
            $(".btn").removeClass("bgcolor");
            $(".img-ul").animate({
                marginLeft: -$(window).width() * count
            }, 500, function () {
                if (count >= $(".img-li").length - 1) {
                    count = 0;
                    $(".img-ul").css({
                        marginLeft: 0
                    })
                }
            })
            //因为总共有六张图片  但是只显示五张  本来将下面对按钮操作的代码可以写成一个函数放在animate里,但是按钮变颜色会有一点延迟,
            //所以进行下面的处理:下面一段代码吗和animate是同时执行的,所以count在等于最后一张图片的时候(最后一张和第一张一样),就应该让第一张变色
            if (count == $(".img-li").length - 1) {
                $(".btn").eq(0).addClass("bgcolor");
            } else {
                $(".btn").eq(count).addClass("bgcolor");
            }
        }
        //这一段代码我注了  mouseenter事件是相对于浏览器网页的   手机没有mouseenter 鼠标进入事件   手机的时间是触摸事件touch
        // $(".img-ul").on("mouseenter", function () {
        //     clearInterval(time);
        //    // console.log(1);
        // }).on("mouseleave", function () {
        //     time = setInterval(t, 1000);
        //     // console.log(2);
        // })
        var startx;//开始触摸的坐标
        var movex;//触摸过程中的坐标
        var old;//获取ul之前的marginleft
        $(".img-ul").on("touchstart", (e) => {
            //console.log($(".img-ul").css("marginLeft"));
            old = parseInt($(".img-ul").css("marginLeft"));//在每次刚触摸时获取之前的marginleft,在触摸的过程中使用
                                                            //要使图片紧接着之前的marginleft移动
            clearInterval(time);
            startx = e.originalEvent.targetTouches[0].pageX;
        }).on("touchmove", (e) => {
            movex = e.originalEvent.targetTouches[0].pageX;
            //console.log($(window).width()/2-10)
           
            if (movex - startx < 0) {//向右滑
                //console.log(count);
                if (count >= $(".img-li").length - 1) {//这个判断是当时第四张图片时 count就++成5(在end里面)再滑最后最后一张图也就是第五张的时候,让ul marginleft等于0,count也等于0 
                    console.log(-$(window).width()*($(".img-li").length-1));
                    $(".img-ul").animate({
                        marginLeft: -$(window).width() * 0
                    }, 5,function () {
                        count = 0;
                        console.log("重置");
                    })
                } else {
                    
                    if (count == 0) {//针对上面的if  在移动最后一张图片时在move这个过程中进行完上面的if代码  立即进行这个if  .在移动时设置marginleft,这里写判断的原因是:当ul的marginleft=0时,它的移动距离就不能再加减old,而是手移动多少他就移动多少
                       // console.log("重置0");
                        $(".img-ul").css({
                            marginLeft: -Math.abs(movex - startx)
                        })
                    }
                    else {
                        $(".img-ul").css({
                            marginLeft: -Math.abs(movex - startx) + old
                        })
                    }
    
                }
    
            }
            // if (movex - startx < 0) {
            //     //console.log(Math.abs(movex-startx));
            //     $(".img-ul").css({
            //         marginLeft: -Math.abs(movex - startx) + old
            //     })
            // }
    
            else if (movex - startx > 0) {//向左滑
                //count--;
    
                if (count <= 0) {//左滑到第0个左边就在没有图片了,再滑就是空白的,所以这里就有了判断
                    //console.log(-$(window).width() * ($(".img-li").length - 1));
                    $(".img-ul").animate({//当滑的是第0个的时候   将ul的最后一张图片放在第一张图片的位置
                        marginLeft: -$(window).width() * ($(".img-li").length - 1)
                    }, 5,function(){//放完之后再jiangcount的值变成最后一张图片的值   因为end里面刚进去就是count--所以这里的值就是5
                        count = $(".img-li").length - 1;
                    })
                    
    
                    //$(".img-ul")
                } else {//这里的判断出现的原因是:紧接着上面的if  在这个move执行的过程中  当count== $(".img-li").length - 1时
                //它的移动距离就和其他的不一样了,不能再加减old了,因为ul的marginleft发生了变化,不是触摸开始时获取的old了
                    if (count == $(".img-li").length - 1) {
                        $(".img-ul").css({
                            marginLeft: -$(window).width() * ($(".img-li").length - 1) + Math.abs(movex - startx)
                        })
                    }
                    else {
                        $(".img-ul").css({
                            marginLeft: Math.abs(movex - startx) + old
                        })
                    }
    
                }
    
            }
        }).on("touchend", function () {
            if (movex - startx < 0) {
                if (Math.abs(movex - startx) >= $(window).width() / 2 - 10) {
                    
                     $(".btn").removeClass("bgcolor");
                   
                    if(count==4){//这里处理了一个bug   就是如果没有这段代码count=5时还会进行下面的count++,count就会等于六,而六是没有图片的,就会有空白,动画不流畅
    
                        t();//为啥这里要这样处理这个bug呢?
                        //因为在计时器函数中我们就处理了当count=5时!在这里count=4,就要处理计时器一进去就count++,
                        //这里调用了一次计时器里面的函数而不是直接启动计时器,因为计时器刚开始有一个1000ms的延时,我为了动画更流畅,所有调用一次
    
                    }
                    else{
                        count++;
                        $(".img-ul").animate({
                            marginLeft: -$(window).width() * count
                        }, 500)
                        $(".btn").eq(count).addClass("bgcolor");
                    }
                   console.log(count);
                   
                    
                    time = setInterval(t, 1000);
                }
                else {
                    $(".img-ul").animate({
                        marginLeft: -$(window).width() * count
                    }, 500)
                    time = setInterval(t, 1000);
                }
            }
            else if (movex - startx > 0) {
                //处理移动什么范围决定图片是否移动到下一个还是不动
                if (Math.abs(movex - startx) >= $(window).width() / 2 - 10) {
                    count--;//count只一个全局变量  用count操纵点的颜色还有计时器函数正常进行  保证一系列动画流畅
                    $(".btn").removeClass("bgcolor");
                    $(".img-ul").animate({
                        marginLeft: -$(window).width() * count
                    }, 500)//当移动结束时控制图片的左间距marginleft  确保它是显示完整的图片而不是半个图片
                    $(".btn").eq(count).addClass("bgcolor");
                    time = setInterval(t, 1000);//重新启动计时器   这个计时器刚开始相当于有100ms的延时   所以上面采用了一个anmite,使得touchend立即出发,图片就可以滑动到该在的位置,因为计时器函数一开始就是count++直接走下一个图片等等,所以,动画就这样流畅的走下去了
                }
                else {//滑动的距离如果小于规定的距离就让图片还保持在原来的图片原来的位置,这里给的是animate,count也不发生变化
                    $(".img-ul").animate({
                        marginLeft: -$(window).width() * count
                    }, 500)
                    time = setInterval(t, 1000);//同上animate结束后重新启动计时器
                }
            }
    
        })
    })
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <linK rel="stylesheet" href="../static/css/index.css"/>
        <script src="../static//js//jquery-1.9.1.js"></script>
        <script src="../static//js//index.js"></script>
    </head>
    <body>
        <div class="img-block">
            <ul class="img-ul">
                <li class="img-li">
                    <img src="../static/img/1.jpg" alt=""/>
                </li>
                <li  class="img-li">
                    <img src="../static/img/2.jpg" alt=""/>
                </li>
                <li  class="img-li">
                    <img src="../static/img/3.jpg" alt=""/>
                </li class="img-li">
                <li class="img-li">
                    <img src="../static/img/4.jpg" alt=""/>
                </li>
                <li class="img-li">
                    <img src="../static//img/5.jpg" alt=""/>
                </li>
                <li class="img-li">
                    <img src="../static/img/1.jpg" alt=""/>
                </li>
            </ul>
            <div class="btn-block">
                <span class="btn bgcolor"></span>
                <span class="btn"></span>
                <span class="btn"></span>
                <span class="btn"></span>
                <span class="btn"></span>
            </div>
        </div>
    </body>
    </html>
    

    css

    *{
        margin: 0;
        padding: 0;
    }
    .img-block{
        position: relative;
        width: 100%;
        height: 11rem;
        overflow: hidden;
    }
    .img-ul{
        width: 600%;
        height: 100%;
    }
    .img-li{
        list-style: none;
        width: 16.66666667%;
        height: 100%;
        padding: 10px;
        box-sizing: border-box;
        float: left;
    }
    .img-li>img{
        width: 100%;
        height: 100%;
    }
    .btn-block{
        position: absolute;
        left: 0;
        bottom:0;
        width: 100%;
        height: 2rem;
        text-align: center;
    }
    .btn{
        display: inline-block;
        width: 10px;
        height: 10px;
        border: 1px solid black;
        border-radius: 50%;
        background: white;
    }
    .bgcolor{
        background: red;
    }
    
    展开全文
  • 其实很简单,就是利用iPhone自带的邮件应用来调整照片的像素、改变图片大小。虽然这个方法听着有点奇怪,但是如果你的设备没有第三方应用可调整图片大小的话,这个办法还是可以应急的,而且步骤真的很简单!首先,在...

    其实很简单,就是利用iPhone自带的邮件应用来调整照片的像素、改变图片的大小。虽然这个方法听着有点奇怪,但是如果你的设备没有第三方应用可调整图片大小的话,这个办法还是可以应急的,而且步骤真的很简单!

    首先,在iPhone的照片中选择你要调整大小的图片,接着点击左下方的向上箭头,调出如上图的界面,然后选择“邮件”。

    然后你的iPhone会进入邮件界面,在收件人一栏填上自己的邮箱地址即可,而主题则随便写,只要有写就好,完成之后点击右上角的“发送”。

    点击“发送”之后,邮件并不会立即发出,而是会跳出修改图片大小的页面。如图所示,一共有“小”、“中”、“大”、“实际大小”四种尺寸可选。这四种尺寸对应的像素分别如下:

    -“小”尺寸对应的像素为 320×240

    -“中”对应的像素为 640×480

    -“大”对应的像素为 1632×1224

    -“实际大小”则是 3264×2448(这也是用户使用 iPhone 拍摄照片时的实际大小,未经调整或者压缩)。

    以上就是iPhone调整照片大小方法教程 无需第三方软件的全部内容了,希望对各位有所帮助。如果各位还有其他方面的问题,或者想要了解最新的资讯,请持续关注脚本之家!

    展开全文
  • 图片尺寸修改app是一款修图裁剪图片神器,用户可以使用它来为图片进行裁剪,并且精确度很高,精确到厘米、毫米、英寸等等,比普通的修图软件强大、精准很多。图片尺寸修改app操作简单,只需要输入所需尺寸就能为...

    图片尺寸修改器app是一款修图裁剪图片神器,用户可以使用它来为图片进行裁剪,并且精确度很高,精确到厘米、毫米、英寸等等,比普通的修图软件强大、精准很多。图片尺寸修改器app操作简单,只需要输入所需尺寸就能为你裁剪想要的尺寸,有需要的朋友快来下载吧!

    图片尺寸修改器app简介

    图片尺寸修改器app能够帮助用户朋友们对图片进行剪裁,它能够精确到毫米,适合对图片有要求的朋友!

    图片尺寸修改器app特色

    您可以使用以下 4 种测量单位中的任意一种指定输出格式:像素、毫米、厘米和英寸

    要保持纵横比,只需点击宽度和高度输入字段之间的链条图标。

    此款图像大小应用程序配置有保存、通过电子邮件发送、打印或分享最终图像的选项。

    图片尺寸修改器app亮点

    现在使用的图像尺寸已保存,可以从列表中快速选择。

    图像现在可以左右旋转90°。

    添加了照片编辑器。 (过滤器,文字,贴纸等)

    可以在设置中调整JPG质量。

    可以在设置中更改输出图像的保存路径。

    从原始图像复制Exif数据。

    如果你也想用图片尺寸修改器app,快来麦块下载吧!

    展开全文
  • 手机APP测试

    2021-01-08 16:25:04
    关于手机APP测试 思维导图 一、功能测试 1.1 启动 APP安装完成后,是否可以正常打开,稳定运行 APP的速度是可以让人接受,切换是否流畅 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的...
  • 谷歌Android系统手机默认只能把软件安装在手机内存里,使本来就不大的手机内存显得捉襟见肘。如果你也是个手机软件狂人,喜欢尝试各种各样新奇有趣的软件,面对越来越少的手机内存空间,不得不对已经安装的软件痛下*...
  • 打开QQ,或者微信,发送图片选择原图就可以看查看图片大小。当然还可以用其他的软件。首先我们去苹果APP Store下载Exif照片查看器。然后打开软件。我们看到这个软件罗列出我们的相簿里面的照片了。注意,这里是相簿...
  • 现在有了图片编辑工具app图片修改随时进行,快来下载吧图片编辑工具app介绍想给你的照片增加饰物和标志吗?想不用纸笔就可以画草图讨论问题吗?想裁剪变换图片吗,图片编辑工具就是你的首选。功能详细给图片添...
  • 很多朋友想开始用手机拍视频,可能不知道如何剪辑!本文将给大家介绍几款好用又方便的手机剪辑短视频工具,即便是零基础,用下面这些工具,你也可以轻松开始剪辑短视频。选择一款实用好用的剪辑工具很重要,工具灵活...
  • 随着物联网的发展,工业自动化平台需要实现手机APP、网页远程监控,传统的组态软件一般只能用于局域网系统,如果需要做成手机APP和网络监控,以前是需要网络工程师配合定制,耗费时间长成本高。随着需求的增多,工控...
  • 现在出门只需一部手机和一块手绘板,就能随时随地想画就画~本文便针对数位板如何连接手机画画等问题,为已经入手板子但还没玩转的朋友,解锁更多功能玩法。链接数位板前先确保你的手机或平板是Android 6.0或以上版本...
  • python-22-开发手机app

    千次阅读 2021-02-07 08:57:05
    1 安装测试 (1)安装 CMD>conda activate python36 CMD>pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew CMD>pip install kivy.deps.gstreamer ...from kivy.app import App from ki.
  • 软件测试面试题整理(六)之app测试篇

    千次阅读 多人点赞 2020-11-06 00:14:16
    App 修改了服务端,则客户端用户所有核心版本都需要进行回归测试一遍; 兼容方面 Web项目:a. 浏览器(火狐、谷歌、IE等)b. 操作系统(Windows7、Windows10、Linux等) App项目:a. 设备系统: iOS(ipad、iphone)...
  • 手机画画软件就是一种能帮助你在手机上画画的app。画画app的出现,你可以随时随地在手机上轻松绘画,不受时间、场景等任意因素影响。那么一步一步教画画的app有哪些?2018手机画画软件哪个好呢?下面就跟小编一起来看...
  • 手机APP测试流程&方法

    万次阅读 多人点赞 2018-10-05 20:42:35
    APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认...
  • 如何保证手机APP兼容性覆盖测试

    千次阅读 2020-01-18 10:42:08
    众所周知,APP兼容性覆盖测试一直以来被认为是一个高成本、耗时低效、耗人力的测试工作,且兼容性测试是一项必须要进行的测试项目,因为有不同的机型、系统平台、分辨率、网络、厂商、数据兼容以及不同兼容问题场景...
  • 手机时钟软件推荐

    千次阅读 2021-01-17 15:47:40
    下载生活服务|47.3MB更新时间:2019-04-04 12:04:18评分:7概要:抖音文字云时钟app是一款异常火爆的数字时钟软件,该软件在抖音上已经被众多小伙伴种草了,它拥有非常炫酷的背景,设置安装起来也非常简便,可以...
  • 类型 :资讯阅读/大小 :10.45MB/时间 :2020/10/28鹦鹉图标包专业版是一款非常好玩的手机图标包辅助工具,它的功能非常强大,该软件提供了很多的图标包资源,免费使用,没有任何限制,支持自定义切换,一键点击即可...
  • 因为从事互联网领域的工作,所以总会收到很多朋友的询问,表示想建立一个App,或创业,或是增长线上渠道,或者仅作为个人的一个小工具,小平台,但是又苦于不懂软件开发技术,咨询专业的外包公司,价格都太高,不...
  • 获取APP缓存大小以及清理APP缓存

    千次阅读 2016-09-21 11:15:34
    系统文件(注:这个是系统的文件系统,不允许修改的) 内置SD卡(注:现在的手机基本上都有,就是我们所谓的ROM,是不可以移除的,RAM是我们手机的运行内存) 外置SD卡(注:这个就是我们的SD卡了,可以移除)...
  • 手机APP物联网远程控制开关

    万次阅读 2020-09-10 21:17:29
    2 系统总体方案设计 2.1 技术指标 本次毕业设计的主要任务是通过设计软硬件以及相应手机app程序、上位机软件和网页实现一款物联网远程终端控制开关系统,针对较长距离和工业现场环境恶劣,增加远程数据采集和通信的...
  • 刚接触移动应用的界面设计,最先跳入脑海的疑问是:画布尺寸设计多大(特别是Android)、图标和字体大小怎么定、需要设计多套设计稿么、如何切图以配合开发的实现?本篇将结合iOS和android官方的设计规范、搜集的资料...
  • 最近因为有个项目的需要,需要更改手机系统字体的大小,默认的手机字体从0.75f,1.0f,1.15f,1.3f变化一次为小,标准,大,超大级别;使用正常的api是实现不了的。 心酸的过程,自己各种百度,google,一步步的尝试,...
  • 一款手机App的开发成本是多少钱?

    千次阅读 2018-05-03 15:44:22
    接触过上万名创业者,开发上线过超过30款App,没有比我更适合回答这个问题的了。本文对想做好一款App项目的人来说这是一篇价值百万的回答!因为这是我们花了几百万试错成本试出来的经验! 在我们从事app开发行业...
  • 影响APP大小的因素: 第一大因素:看你的APP页面采用的是storyboard,xib,代码那一种。你代码都是用storyboard实现的,那么的APP达到30M很正常,除非你的页面超少。若你的页面是都是用XIB实现的,你的APP达到20M...
  • 手机上有哪些好用的视频剪辑 App

    千次阅读 2020-12-20 09:22:18
    以下包含了16款手机软件的详细介绍,所以会有点长,不想看的人可以直接看结果。付费版剪辑软件最推荐电影精灵(操作稍许专业一点,需要摸索),免费版最推荐剪映(功能强大,简单,模板多),喜欢滤镜最推荐印象(滤镜很...
  • 接收版本 App测试版本送测规范 UI测试:核对rp/效果图 功能测试:核对需求文档、兼容性测试、性能压力测试, 尽快申请到正式环境下测试,后台订单统计测试、用户行为统计测试、发送上线报告、回归测试 测试资源 产品...
  • 通过改变计数器的值来选取下一条需要执行的字节码指令 和线程是一对一的关系即“线程私有” 对Java方法计数,如果是Native方法则计数器的值为Undefined 不会发生内存泄漏 Java虚拟机栈(Stack) Java方法执行的内存...
  • 经过此软件的处理,图片表面是不会发生任何改变,比如:像素、图片大小等等。但是系统却会认为这是两个不同的图片。 免费批量修改图片MD5软件 百度云下载地址:https://pan.baidu.com/s/1dEWSpf7 软件来源于...
  • App测试中常见的测试点

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,845
精华内容 6,338
关键字:

修改图片大小的软件手机app