精华内容
下载资源
问答
  • 最近有个粉丝私信小编,说他总觉得自己的屏幕不跟手,在玩游戏的时候会比较明显,严重影响了他的游戏体验,问是不是手机屏幕有问题。小编上网搜了一下,发现吐槽屏幕不跟手的人还挺多的,大部分都是发生在玩游戏这类...

    3b6a7264ab7ffcad6d3ddb7e41127416.png

    d59af55c9897be650c5530bda5602eb1.gif

    最近有个粉丝私信小编,说他总觉得自己的屏幕不跟手,在玩游戏的时候会比较明显,严重影响了他的游戏体验,问是不是手机屏幕有问题。

    小编上网搜了一下,发现吐槽屏幕不跟手的人还挺多的,大部分都是发生在玩游戏这类需要频繁滑动的场景,而日常使用则没有多大感觉。

    这是为什么呢

    ?

    先说客观原因,屏幕不跟手主要由 TP 响应时间和屏幕显示时间共同决定,简单来说,当手指触碰到屏幕时,触点的电容就会发生变化,控制器计算频率信号确定触摸位置,这一个阶段需要时间。当屏幕接收到触摸信号的时候,显示出相应的内容,这个阶段也需要时间。

    再说外来因素影响,最常见的就是贴膜和手指有油,质量不好的膜会影响触点电容的信号识别。手指有油的情况,大家都经常遇到,严重的话还会导致屏幕无响应。

    外来因素好解决,但怎么知道哪些手机的屏幕跟手呢?正好我们机库里面有最近发布的热门机器,我们就拿来测试一下,在高速相机的眼睛里,看看哪个屏幕最跟手。

    测试方法很简单,我们用一台可以高速移动的机械臂来模拟手指滑动的情况,配合相应的测试软件,整个过程用高速录像记录下来,即可看出实际操作与屏幕响应的时间差,以此来评判屏幕是否跟手。

    下面直接来看结果,可以看到,iPhone X 位列第一,表现得最好,怪不得大家都喜欢用 iPhone 吃鸡。

    9b98e6a88898a635a98fb2f0e389179e.png

    将慢动作视频做成了 GIF 图,大家来看看其中有没有你在用的手机。不过大家也不用担心,这零点零几秒的差异也不是能一眼看出来的。

    iPhone X

    856c034f6c8efdf4c659998b0eb108c3.gif

    红魔电竞游戏手机

    431e75c44d315499e3318bc6595671d3.gif

    一加 6

    afee6a39039135d55ce17d0514ada849.gif

    vivo NEX

    fdb1bbc84e84e61215ceb33ca7055e1a.gif

    OPPO Find X

    8cca8e54c5c1a3bc14e42f943dd9f2b4.gif

    三星 Galaxy S9+

    8d90186825c481f266fc1f10e9f3391b.gif

    小米 8

    b1f5e9bee6652920ed683ae6b3d40098.gif

    华为 P20 Pro

    116c5e4908af8961e4cff33288c04d89.gif

    小米 MIX 2S

    778312005ab8aebffe86c0b807be3047.gif

    坚果 R1

    4ce4c068803f571dc78b34e699ca9111.gif

    HTC U12+

    7495f9f41464977a8be265951a26d8ef.gif

    黑鲨游戏手机

    e4431f7a420b57880cf4ed78bb22222f.gif

    最后也提醒一下大家,虽然客观原因很重要,但我们日常使用时更多是受外来因素的影响,所以大家在吃鸡之前,记得先洗手,做个讲卫生的好孩子。

    点赞加鸡腿!

    c2bd87cff66ed87b674016d70783719f.gif
    展开全文
  • 好奇别人的华为手机息屏显示为什么这么好看?自己的却不知知道怎么设置,可以往下看哦。手把手教你,华为手机如何实现多彩息屏显示?很简单,看一遍就能学会。不需要点亮屏幕,就可以查看时间、日期和消息等,而且还...

    e79308e475cdc629e6d92ee49855d6fc.png

    好奇别人的华为手机息屏显示为什么这么好看?自己的却不知知道怎么设置,可以往下看哦。手把手教你,华为手机如何实现多彩息屏显示?很简单,看一遍就能学会。

    7ba50ebad7ecec4e693daa7fcc446c8f.png

    不需要点亮屏幕,就可以查看时间、日期和消息等,而且还可以随着时间的变化,自动模拟自然光照的效果。不仅方便,而且有点酷炫,喜欢的话,可以这样设置。

    1c004dbfba196a286feddfd415436978.gif

    首先我们打开手机里的【设置】项,然后点击【桌面和壁纸】的选项,进入之后可以看到【灭屏显示】;

    f436f224676149617d212ba812ed7350.png

    接着我们打开灭屏显示的开关,然后选择设置一下灭屏显示的开始时间和结束时间,确认一下,再返回主界面就可以看到灭屏显示啦。

    631e6a116df7bb43bc07fd4d4b994002.png

    小提示:设置过程中,还可以点击时钟样式,切换成自己喜欢的风格哦。

    c77b15c23602a10b90c39b1849f1bc49.png

    温馨提示:华为手机这样设置,就可以实现多彩息屏显示,但可能存在手机型号不一样的情况的,导致操作不一样,所以如果你的手机是这样设置的,可以去【服务】里面找客服询问怎么设置,也可以留言下方,小编帮你解答哦。

    343571fe1288f00b37758c9af8ff7e11.png

    华为手机如何实现多彩息屏显示?手把手教你,看一遍就能学会啦。

    展开全文
  • 如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧。 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是什么呢?请注意观看博文Android学习笔记之...
  • 4.滑动屏幕隐藏或显示导航面板,在软件主界面,通过滑动屏幕上除滑动按钮之外的其他区域,向下或向左能够隐藏滑动导航面板,反方向开启,通过什么步骤隐藏了面板,通过相反操作步骤显示面板,该功能可以开启或关闭。...
  • 滑动的概念,很不好理解,想通过这一篇博文,让自己和不明白的人加深下理解,希望我的语言能够使你明白:首先我们要理解,为什么使用滑动? 因为手机屏幕,给我们的视图就那么大,我们看到的视图有限,要想在固定的...

    滑动的概念,很不好理解,想通过这一篇博文,让自己和不明白的人加深下理解,希望我的语言能够使你明白:

    首先我们要理解,为什么使用滑动?
    因为手机屏幕,给我们的视图就那么大,我们看到的视图有限,要想在固定的视图,去展示更多的东西,我们就需要去滑动,把隐藏的那部分变为可视视图。我们可以把能展示的大小看成一个很大的画板,我们展示看到的区域是里面的一部分,当我们需要看到更多的时候,就需要去滑动画板,让自己看到那些被隐藏的。

    然后,还有一个很重要的概念,就是我们滑动的是View内容,而并不是view本身,一个特别好理解的例子就是listview,我们把listview设置宽和高都沾满屏幕,当我们上下滑动时,我们滑动的是listview里面内容,而不是listview本身,listview还是铺满整个屏幕当我们滑动的时候,所以当我们想一个button发生位置改变时,要调用的不是button.scroolTo(),或者button.scroolBy(),而是应该调用它的父控件,layout.scroolTo()或者layout.scrooBy()。此时,button就是layout中的内容。当调用button的scroolTo或者button.scroolBy时,button里面的内容会被移动看不见,但button还在最初的位置。

    区分scroolTo和scroolBy的区别:

    看scroolTo的源码:

     /**
         * Set the scrolled position of your view. This will cause a call to
         * {@link #onScrollChanged(int, int, int, int)} and the view will be
         * invalidated.
         * @param x the x position to scroll to
         * @param y the y position to scroll to
         */
        public void scrollTo(int x, int y) {
            if (mScrollX != x || mScrollY != y) {
                int oldX = mScrollX;
                int oldY = mScrollY;
                mScrollX = x;
                mScrollY = y;
                invalidateParentCaches();
                onScrollChanged(mScrollX, mScrollY, oldX, oldY);
                if (!awakenScrollBars()) {
                    postInvalidateOnAnimation();
                }
            }
        }

    参数x,y是想要滚动的偏移x,和y值,mScroll、mScrollY表示的是离视图起始位置的偏移量,意思就是当你滚动了,这个才有值,如果没有发生滚动,这两个值就是0。
    scrollTo的滚动是相对于这个view的起始位置,只执行一次,因为起始位置就一个,所以,当执行一次后,在取调用这个view的scrollTo就不在起作用了,第一次调用后,oldX,oldY会被赋值成想x,y的值,当第二次调用时,x,y值不发生变化时,因为mScrollX的值就是x的值,mScrollY的值就是y的值,所以,在if(mScrollX !=x || mScrollY !=Y)这句下面不会被执行,那么onScrollChanged()方法就不会被执行,因此,当第二次调用时,如果x,y值不变,那么就不会发生滚动。

    看scrollBy的源码:

      /**
         * Move the scrolled position of your view. This will cause a call to
         * {@link #onScrollChanged(int, int, int, int)} and the view will be
         * invalidated.
         * @param x the amount of pixels to scroll by horizontally
         * @param y the amount of pixels to scroll by vertically
         */
        public void scrollBy(int x, int y) {
            scrollTo(mScrollX + x, mScrollY + y);
        }

    scrollBy是相对于上一次位置进行滑动的,虽然也是调用scrollTo这个方法,但里面的x,y值每次调用都会发生改变,参数x,y同样是想要滚动的偏移量,但mScrollX+x,mScrollY+y就相当于在上一次基础上,因为现在的mScrollX,mScrollY的值就是上一次滚动后的view的x,y的偏移量。

    在举个例子,我要让你和我下次看到后不会不明白为之:
    mScrollX,mScrolly不滚动时,值为0.
    当我们调用scrollTo(20,20)时,这时,mScrollX的值就是20,mScrollY的值也是20,当我们再次调用scrollBy(20,20)时,我们的mScrollX的值就是40,mScrollY的值也是40。
    但当我们再一次执行,strollTo(20,20)时,mScrollX的值就是20,mScrollY的值也是20,而执行同样的scrollBy(20,20)时,在mScrollX,和mScrollY等于40的情况下,这时mScrollX就是60,mScrollY也是60。简而言之,mScrollTo执行后,mScrollX就是x的值,mScrollY值就是y的值,而scrollBy执行后,是在原来的基础上加上x,y值。注意一点,这里的正值是水平方向是想做,竖直方向是像上,向右和向下则是负值。够明白了吧,我对我自己说…..

    scrollTo和scrollBy都是瞬时滑动的,当我们需要弹性滑动,有个滑动过程时,就需要用到Scroller。
    一般我们代码中这么写:

     Scroller mScroller=new Scroller(mContext);
        private void smoothScrollTo(int destX,int destY){
            int scrollX=getScrollX();
            int deltaX=destX-scrollX;
            mScroller.startScroll(scrollX,0,deltaX,0,2000);
            invalidate();
        }
        @Override
        public void computeScroll() {
            if(mScroller.computeScrollOffset()){
                scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
                postInvalidate();
            }
        }

    参数destX,destY表示要滚动的偏移量, startScroll方法中的的5个参数的意思是:

     mScroller.startScroll(int startX,int startY,int dx,int dy,int duration);

    startX:起始的x方向偏移量,或者说目前的x方向偏移量
    startY:起始的y方向偏移量,或者说目前的y方向偏移量
    dx:x方向要滚动的偏移量
    dy:y方向要滚动的偏移量
    duration:多长时间完成这个过程 单位ms

    我们打开startScroll这个方法,代码如下:

    /**
         * Start scrolling by providing a starting point, the distance to travel,
         * and the duration of the scroll.
         * 
         * @param startX Starting horizontal scroll offset in pixels. Positive
         *        numbers will scroll the content to the left.
         * @param startY Starting vertical scroll offset in pixels. Positive numbers
         *        will scroll the content up.
         * @param dx Horizontal distance to travel. Positive numbers will scroll the
         *        content to the left.
         * @param dy Vertical distance to travel. Positive numbers will scroll the
         *        content up.
         * @param duration Duration of the scroll in milliseconds.
         */
        public void startScroll(int startX, int startY, int dx, int dy, int duration) {
            mMode = SCROLL_MODE;
            mFinished = false;
            mDuration = duration;
            mStartTime = AnimationUtils.currentAnimationTimeMillis();
            mStartX = startX;
            mStartY = startY;
            mFinalX = startX + dx;
            mFinalY = startY + dy;
            mDeltaX = dx;
            mDeltaY = dy;
            mDurationReciprocal = 1.0f / (float) mDuration;
        }

    从这里我们可以看到,调用startScroll方法是无法让view滑动的,方法里只是去给一些变量去赋值,里面并没有滑动的相关操作,那么view怎么去滑动呢,答案是在它下面的invalidate这个方法。invalidate这个方法会将view重新绘制,在重新绘制的过程中,我们会调用View的draw方法,在draw方法里面我们会调用dispatchDraw()这个方法,在dispatchDraw()方法里面我们会调用drawChild()方法,在这个方法里就有我们要用的computerScroll()这个方法,而computerScroll方法在View中是一个空的方法,需要我们自己去实现,也正是因为有了computerScroll方法,我们的view才能去滚动。
    整个过程是这样的:当View重绘后,会调用draw方法里的computeScroll方法,而computeScroll又会去向Scroller获取当前的scrollX,scrollY的值,然后通过scrollTo方法去实现滑动,接着有在此调用postInvalidate方法进行第二次重绘,这次有会在draw方法中调用computeScroll方法,,再一次通过Scroller去获得scrollX,scrollY的值并通过scrollTo去滑动,如此反复,直到在固定的时间内滑动完成。

    看一下scrollX、scrollY值是怎样改变的,computeScrollOffset源码如下:

     /**
         * Call this when you want to know the new location.  If it returns true,
         * the animation is not yet finished.
         */ 
        public boolean computeScrollOffset() {
            if (mFinished) {
                return false;
            }
            int timePassed = (int)(AnimationUtils.currentAnimationTimeMillis() - mStartTime);
    
            if (timePassed < mDuration) {
                switch (mMode) {
                case SCROLL_MODE:
                    final float x = mInterpolator.getInterpolation(timePassed * mDurationReciprocal);
                    mCurrX = mStartX + Math.round(x * mDeltaX);
                    mCurrY = mStartY + Math.round(x * mDeltaY);
                    break;
                case FLING_MODE:
                    final float t = (float) timePassed / mDuration;
                    final int index = (int) (NB_SAMPLES * t);
                    float distanceCoef = 1.f;
                    float velocityCoef = 0.f;
                    if (index < NB_SAMPLES) {
                        final float t_inf = (float) index / NB_SAMPLES;
                        final float t_sup = (float) (index + 1) / NB_SAMPLES;
                        final float d_inf = SPLINE_POSITION[index];
                        final float d_sup = SPLINE_POSITION[index + 1];
                        velocityCoef = (d_sup - d_inf) / (t_sup - t_inf);
                        distanceCoef = d_inf + (t - t_inf) * velocityCoef;
                    }
                    mCurrVelocity = velocityCoef * mDistance / mDuration * 1000.0f;
    
                    mCurrX = mStartX + Math.round(distanceCoef * (mFinalX - mStartX));
                    // Pin to mMinX <= mCurrX <= mMaxX
                    mCurrX = Math.min(mCurrX, mMaxX);
                    mCurrX = Math.max(mCurrX, mMinX);
    
                    mCurrY = mStartY + Math.round(distanceCoef * (mFinalY - mStartY));
                    // Pin to mMinY <= mCurrY <= mMaxY
                    mCurrY = Math.min(mCurrY, mMaxY);
                    mCurrY = Math.max(mCurrY, mMinY);
                    if (mCurrX == mFinalX && mCurrY == mFinalY) {
                        mFinished = true;
                    }
                    break;
                }
            }
            else {
                mCurrX = mFinalX;
                mCurrY = mFinalY;
                mFinished = true;
            }
            return true;
        }

    方法的大意是通过时间流逝的百分比去计算偏移量的改变的百分比,从而计算出当前偏移量的值,最后的返回值true代表整个滑动过程位结束,false代表滑动结束。可见Scroller本身并不能让View去滑动,一定要配合computeScroll整个方法才可以,经过许多次重绘,每次重绘又去调用scrollTo这个滚动方法,去一点点改变scrollX、scrollY的值,去实现滑动,在规定的时间内,每一次微小的滑动过程累加,就是弹性滑动的整个过程。

    参考:
    Scroll原理-附ScrollView源码分析

    任玉刚老师android开发艺术探索中的View滑动

    展开全文
  • 但是我们项目中遇到一个问题:一个页面很大,有多个画廊控件,我们的页面很难上下滑动滑动非常吃力,这是为什么呢?举个例子:如果你的页面放的全都是input输入控件,那么这个页面一样很难滑动,因为当我们在手机...

    混合app开发使用ionic框架的<ion-scroll>指令能够方便地实现水平滚动和垂直滑动。比如我们想实现一个能够水平滑动的画廊,可以使用下面这段代码。

    <html>
      <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    	<script src="jquery-1.11.1.min.js"></script>
        <script src="./1.1.1-release/js/ionic.bundle.js"></script>
    	<link rel="stylesheet" type="text/css" href="./1.1.1-release/css/ionic.css" />
    	<style>
    	/*nowrap不让img换行*/
    	.picturesholder{
    		background-color:#fff;
    		margin:20px;
    		width:400px;
    		height:80px;
    		overflow: hidden;
    		white-space: nowrap;
    	}
    	
    	/**图片占满画廊*/
    	.picturesholder img{
    		width:100px;
    		height:81px;
    	}
    	</style>
    
    	<script>
    	var testModule = angular.module('testApp', ['ionic']);
    	testModule.controller('MyController', function($scope, $ionicScrollDelegate) {
    		$scope.pictures=["imgs/1.png","imgs/2.png","imgs/3.png","imgs/4.png","imgs/5.png","imgs/6.png","imgs/7.png","imgs/8.png"];
    	});
        
    	$(function(){
    		angular.bootstrap($("#body"), ["testApp"]);	
    	})
    	</script>
    </head>
    
    <body id="body" ng-controller="MyController">
      
    	<ion-header-bar class="bar-positive">
    		<h1 class="title">bar-positive</h1>
    	</ion-header-bar>
      
    	<ion-content class="has-header" style="background-color: #ebebeb;">
    	
    		<div class="picturesholder">
    			<ion-scroll direction="x">
    				<img ng-src="{{each}}" ng-repeat="each in pictures"></img>
    			</ion-scroll>			
    		</div>
    		
    	</ion-content>
    	
    	<ion-footer-bar class="bar-balanced">
    		<div class="title">Footer</div>
    	</ion-footer-bar>
    </body>
    </html>
    
    	
    


    单看这一个水平画廊是没有什么问题的,功能和操作都很正常。但是我们项目中遇到一个问题:一个页面很大,有多个画廊控件,我们的页面很难上下滑动,滑动非常吃力,这是为什么呢?举个例子:如果你的页面放的全都是input输入控件,那么这个页面一样很难滑动,因为当我们在手机屏幕上滑动的时候,一不小心很容易就会点中这些输入框,当输入框获得焦点,页面就不能滑动了。使用<ion-scroll>一样有这个问题,当页面全是画廊控件的时候,滑动也十分费劲。


    从ionic文档中也没有找到好的解决办法,最后解决方法是:不使用<ion-scroll>指令,自己实现左右滑动。利用HTML5中的touchmove和touchstart事件实现滚动:

    // do for left-right scroll
    var startX = 0;
    var startY = 0;
    var $gallery = $(".picturesholder");
    
    $gallery.on("touchstart", function(e) {
    	 startX = e.originalEvent.changedTouches[0].pageX,
    	 startY = e.originalEvent.changedTouches[0].pageY;
    });
    
    $gallery.on("touchmove", function(e) {
    	var X = e.originalEvent.changedTouches[0].pageX - startX;
    	var Y = e.originalEvent.changedTouches[0].pageY - startY;
    	 
    	if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
    		var cur_scroll = $(this).scrollLeft();
    		$(this).scrollLeft(parseInt(cur_scroll) - X);
    		e.preventDefault();
    		e.stopPropagation();
    	}
    	else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
    		var cur_scroll = $(this).scrollLeft();
    		$(this).scrollLeft(parseInt(cur_scroll) - X);
    		e.preventDefault();
    		e.stopPropagation();
    	}
    	else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
    	}
    	else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
    	}
    	else{
    	}
    });
    // do for left-right scroll

    web浏览器没有上面2个事件,我们可以用mousedown和mousemove模拟,下面代码一样可以左右滑动。
    <html>
      <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    	<script src="jquery-1.11.1.min.js"></script>
        <script src="./1.1.1-release/js/ionic.bundle.js"></script>
    	<link rel="stylesheet" type="text/css" href="./1.1.1-release/css/ionic.css" />
    	<style>
    	/*nowrap不让img换行*/
    	.picturesholder{
    		background-color:#fff;
    		margin:20px;
    		width:400px;
    		height:80px;
    		overflow: hidden;
    		white-space: nowrap;
    	}
    	
    	/**图片占满画廊*/
    	.picturesholder img{
    		width:100px;
    		height:81px;
    	}
    	</style>
    
    	<script>
    	var testModule = angular.module('testApp', ['ionic']);
    	testModule.controller('MyController', function($scope, $ionicScrollDelegate) {
    		$scope.pictures=["imgs/1.png","imgs/2.png","imgs/3.png","imgs/4.png","imgs/5.png","imgs/6.png","imgs/7.png","imgs/8.png"];
    	});
        
    	$(function(){
    		angular.bootstrap($("#body"), ["testApp"]);	
    		
    		// do for left-right scroll
    		var startX = 0;
    		var startY = 0;
    		var $pictures = $(".picturesholder");
    		
    		$pictures.on("mousedown", function(e) {
    			 startX = e.originalEvent.pageX,
    			 startY = e.originalEvent.pageY;
    		});
    		
    		$pictures.on("mousemove", function(e) {
    			var X = e.originalEvent.pageX - startX;
    		    var Y = e.originalEvent.pageY - startY;
    		     
    		    if ( Math.abs(X) > Math.abs(Y) && X > 0 ) {
    		        var cur_scroll = $(this).scrollLeft();
    		        $(this).scrollLeft(parseInt(cur_scroll) - X);
    		        e.preventDefault();
    		        e.stopPropagation();
    		    }
    		    else if ( Math.abs(X) > Math.abs(Y) && X < 0 ) {
    		        var cur_scroll = $(this).scrollLeft();
    		        $(this).scrollLeft(parseInt(cur_scroll) - X);
    		        e.preventDefault();
    		        e.stopPropagation();
    		    }
    		    else if ( Math.abs(Y) > Math.abs(X) && Y > 0) {
    		    }
    		    else if ( Math.abs(Y) > Math.abs(X) && Y < 0 ) {
    		    }
    		    else{
    		    }
    		});
    		// do for left-right scroll
    	})
    	</script>
    </head>
    
    <body id="body" ng-controller="MyController">
      
    	<ion-header-bar class="bar-positive">
    		<h1 class="title">bar-positive</h1>
    	</ion-header-bar>
      
    	<ion-content class="has-header" style="background-color: #ebebeb;">
    	
    		<div class="picturesholder">
    			<!--<ion-scroll direction="x">-->
    				<img ng-src="{{each}}" ng-repeat="each in pictures"></img>
    			<!--</ion-scroll>-->	
    		</div>
    		
    	</ion-content>
    	
    	<ion-footer-bar class="bar-balanced">
    		<div class="title">Footer</div>
    	</ion-footer-bar>
    </body>
    </html>
    
    	
    


    展开全文
  • 理论:简单来说,Fragment其实可以理解一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。 是一种可以嵌入在...
  • 执行完之后,手机静悄悄关闭屏幕显示,跟什么都没发生一样。手机主人会发现,自己手机电池经常没电,流量消耗也比平时多很多。这不是闹鬼,而是手机中毒了。 3月2日,猎豹移动安全实验室发现一枚新型安卓木马...
  • 《上瘾》学习总结

    2019-08-10 12:15:30
    我们迫不及待的刷朋友圈、刷微博、玩游戏,原本只是打算用手机找个电话,结果一小时后却发现自己依然用手指在屏幕滑动翻页。而且,这种刷手机的欲望有可能伴随了我们一天的时间。 有时候,我们也在懊悔的文字及,...
  • 在公交地铁里面都能看到很多人的人低头看着自己手机屏幕,从此“低头族”一词就产生了,作为一名移动行业的开发人员,我自己也是一名“低头族”,上下班时间在公交地铁上看看新闻来打发下时间,有时候也会看看那些...
  • 在公交地铁里面都能看到很多人的人低头看着自己手机屏幕,从此“低头族”一词就产生了,作为一名移动行业的开发人员,我自己也是一名“低头族”,上下班时间在公交地铁上看看新闻来打发下时间,有时候也会看看那些...
  • 在公交地铁里面都能看到很多人的人低头看着自己手机屏幕,从此“低头族”一词就产生了,作为一名移动行业的开发人员,我自己也是一名“低头族”,上下班时间在公交地铁上看看新闻来打发下时间,有时候也会看看那些...
  • (以下为自己取名字和分类,如需知晓专业名词,看相关书籍) 屏幕类:点击,滑动,长按,多指操作等。 硬件类:按电源键,返回键,home键等。 传感器类:摇动,翻转,横竖屏切换等。   对于用户三大类
  • 3.5 取得手机屏幕大小 3.6 样式化的定型对象 3.7 简易的按钮事件 3.8 手机页面的转换 3.9 调用另一个Activity 3.10 不同Activity之间的数据传递 3.11 返回数据到前一个Activity 3.12 具有交互功能的对话框 3.13 置换...
  • 3.5 取得手机屏幕大小 3.6 样式化的定型对象 3.7 简易的按钮事件 3.8 手机页面的转换 3.9 调用另一个Activity 3.10 不同Activity之间的数据传递 3.11 返回数据到前一个Activity 3.12 具有交互功能的对话框 3.13 置换...
  • 3.5 取得手机屏幕大小 29 3.6 样式化的定型对象 30 .3.7 简易的按钮事件 32 3.8 手机页面的转换 34 3.9 调用另一个activity 37 3.10 不同activity之间的数据传递 41 3.11 返回数据到前一个...
  • 为什么呢?因为谷歌担心你在使用此方法禁用锁屏界面时,绕过锁屏去触犯用户的隐私, 所以上滑解锁其实也阻碍了很多APP绕过解锁去执行一些违规操作, 但是谷歌他万万没想到我是谁?长师界的Jon Skeet(国外很火的一个...
  • 阅读工具 开卷有益

    2012-03-31 14:07:03
    经楼主亲身检测 改程序完美支持酷派f800及windows CE 系统手机 1、开卷操作快速入门: 小说阅读界面: 1、点屏幕上下部分: 前后翻页 2、长按屏幕上下部分:连续翻页 3、水平左右横向滑动:前后翻页、阅读导航(CHM)...
  • 2. 安装时为什么显示要使用很多的权限? 实际上密码管家自身只请求了两个权限,开机启动权限(开机时自动运行)和存储卡读写权限(导出和导入),别的权限皆为嵌入的广告SDK所要求使用的。 【特别建议】 1. 无论是新...
  • 2. 安装时为什么显示要使用很多的权限? 实际上密码管家自身只请求了两个权限,开机启动权限(开机时自动运行)和存储卡读写权限(导出和导入),别的权限皆为嵌入的广告SDK所要求使用的。 【特别建议】 1. 无论是新...
  • 4.2 为什么使用基于XML的布局 18 4.3 举个例子 19 4.4 什么时候加@符号 20 4.5 怎样在Java中使用布局文件 20 4.6 把故事讲完 20 第5章 使用基本的部件 22 5.1 标签 22 5.2 按钮 23 5.3 图像 23 ...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    2.15.6 临时发布添加图片 65 2.16 定制Xcode标识 66 2.17 创建自定义Xcode模板 66 2.17.1 覆盖com.yourcompany 67 2.17.2 构建其他模板 67 2.18 并排查看代码 68 2.19 小结 69 第3章 Objective-C训练营 70 ...
  • 可以先下载apk运行到手机上看看效果,下载链接地址: apk如下所示 组件化apk的下载地址 02.项目运行 运行环境要求 Android studio 版本需要在3.0之上,compileSdkVersion是28,gradle版本是3.2.1,gradle-...
  • 为什么设备差异会导致兼容问题呢?其实在前面的交互篇就已经有提到移动设备的物理属性的差异,这就直接导致了在移动Web开发的兼容问题。比如有些比较老旧设备的触摸屏是不支持多点触控的,只能...
  • 自适应屏幕大小,输入法弹出位置控件底部时,当超过桌面右边或者底部时,自动调整位置。 实现了长按超过500毫秒重复执行按下的键的功能。例如长按退格键,不断删除。 shift键切换输入法,esc键隐藏输入法,空格...
  • 电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch # init 所有的已经连接到...
  • 当我发现找个想听的歌因为版权听不了,需要打开好几个网站开始搜索,来回切换让我抓狂的时候,我知道是时候该做点什么了。 妈妈再也不用担心我找不到我想听的歌了。 支持音乐平台 网易云音乐 虾米 QQ音乐 酷狗音乐 ...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

为什么手机屏幕自己滑动