怎么让Android 浏览器焦点在文本输入框时不自动放大页面

怎么让Android 浏览器焦点在文本输入框时不自动放大页面,第1张

只能通过设置input的字体来阻止:

@media only screen and (min-device-width : 320px) and (max-device-width : 1024px) { select:focus, textarea:focus, input:focus { font-size: 16px !important; } }

浏览器也许认为,只有input中的字体大于等于16px时用户才能看得清楚。

焦点焦距关系成像原理:

1、当物距大于2倍焦距时,则像距在1倍焦距和2倍焦距之间,成倒立、缩小的实像。此时像距小于物距,像比物小,物像异侧。

2、当物距等于2倍焦距时,则像距也在2倍焦距,成倒立、等大的实像。此时物距等于像距,像与物大小相等,物像异侧。

3、当物距小于2倍焦距、大于1倍焦距时,则像距大于2倍焦距,成倒立、放大的实像。此时像距大于物距,像比物大,像位于物的异侧。

4、当物距等于1倍焦距时,则不成像,成平行光射出。

5、当物距小于1倍焦距时,则成正立、放大的虚像。此时像距大于物距,像比物大,物像同侧。

焦点与焦距的关系

焦点(focal point、focus):

对于一个理想透镜而言:远处的物体可以近似地看成时位于无限远处。该无限远处的物体上任何一点发出的到达理想透镜的光线,可以看成是平行光。

所谓“光轴”就是一条垂直穿过理想透镜中心的光线。与光轴平行的光线射入凸透镜时,理想的凸镜应该是所有的光线会聚在透镜后面一点上,这个会聚所有光线的一点,就叫做焦点。例如使用放大镜将太阳光聚光后,形成最小点的就是焦点。焦点一定在光轴上。

在光学术语上,以透镜为界:被摄物体所在的空间称为“物方空间;被摄物体所发出的光穿越透镜在透镜后面形成的像所在的空间称为“像方空间”;在像方空间所形成的焦点称为“像方焦点”或“后焦点”;反之,从像方开始,投射出与光轴平行的光线,并在透镜物体空间所形成的焦点,称为“物方焦点”或“前焦点”。

注意:对于凹透镜而言,物方焦点与像方焦点的位置与凸透镜相反。

在做项目的时候,碰到一些常见的UI feature,在网上找了些资料,有的也不是那么完美,于是在这里简单记录下。

1 后退(BACK按钮),退出应用程序

这个功能是当用户按下了back键时候,提示用户是否退出应用程序,点击确定,退出应用程序。网上大致的解决方案如下:捕获onKeyDown事件-->如果是KeyEventKEYCODE_BACK,d出按钮-->点击确定-->退出应用程序。

大致代码如下:

[java] view plaincopyprint

public boolean onKeyDown(int keyCode, KeyEvent event)

{

if(keyCode == KeyEventKEYCODE_BACK || keyCode == KeyEventKEYCODE_HOME)

{

Loggeri(TAG, "key_back is pressed");

CustomAlertDialog alertDialog = new CustomAlertDialog(this);

alertDialogsetTitle(thisgetResources()getString(Rstringmore_alert_title))

setMessage(thisgetResources()getString(Rstringback_home_key))

setPositiveButton(thisgetResources()getString(Rstringmore_alert_confirm), exitListener)

setNegativeButton(thisgetResources()getString(Rstringmore_alert_cancel), null)

show();

}

//case KeyEventKEYCODE_MENU:

return superonKeyDown(keyCode, event);

}

[java] view plaincopyprint

private DialogInterfaceOnClickListener exitListener = new DialogInterfaceOnClickListener(){

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

//delete the account from DB;

Loggeri(TAG, "Exit the application");

finish();

exitApplication();

}};

而对于exitApplication(),有不同的实现方式,有的有效,有的不甚理想,一般有如下几种:

a 直接调用 Systemexit(0)

---该方法最不推荐,也是android摒弃的方法。与之对应还有一个是:

[java] view plaincopyprint

androidosProcesskillProcess(androidosProcessmyPid());

b 启用一个intent,直接跳转到系统后台。

[java] view plaincopyprint

Intent homeIntent = new Intent(IntentACTION_MAIN);

homeIntentaddCategory( IntentCATEGORY_HOME );

homeIntentsetFlags(IntentFLAG_ACTIVITY_CLEAR_TOP);

startActivity(homeIntent);

该方法,并没有完全实现应用程序的退出,只是退到后台,交友系统管理,在内存不够的时候会被系统杀死;

c 比较推荐的一个方法:通过标记位,退出每一个activity。

(1)在MainActivity中定义一个标记位

[java] view plaincopyprint

public static boolean isQuit = false;

(2)在MainActivity中onCreate的时候初始化为false;

[java] view plaincopyprint

isQuit = false;

(3)捕获key事件,如果是后退键,设置该值为true。

[java] view plaincopyprint

MainActivityisQuit = true;

finish();

(4)在每个activity中,实现onRestart()。

[java] view plaincopyprint

@Override

protected void onRestart()

{

superonRestart();

if(MainActivityisQuit)

finish();

}

2 隐藏键盘

隐藏键盘,有两种方式,可以通过代码控制,也可以通过在Manifest中配置,具体如下。

A 代码控制。

[java] view plaincopyprint

inputManager = (InputMethodManager)thisgetSystemService(ServiceINPUT_METHOD_SERVICE);

inputManagerhideSoftInputFromWindow(nameEditTxtgetWindowToken(), 0);

其中nameEditTxt为键盘焦点获得的控件。

B Activity中配置

[java] view plaincopyprint

<activity android:name="uixiaoxuntongProfileActivity"

android:windowSoftInputMode="stateHidden">

</activity>

在实际中,碰到的问题是A方式无效,可能原因是Activity启动时,nameEditTxt不是获得焦点的控件,具体原因待查。通过B方式,就解决这个问题。

3 ImageView的自适应问题

问题描述

屏幕中间有一个ImageView,填充除了顶部NavigationBar,底部toolbar之外的所有空间;当比ImageView小时候,放大到屏幕宽度的比例;当Image高度大于屏幕时,ImageView高度为高度。

解决方案

1 设置ImagView的属性为

[java] view plaincopyprint

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:scaleType="fitStart"

2 在ImageView外面套一个scroolView

[java] view plaincopyprint

android:layout_width="fill_parent"

android:layout_height="fill_parent"

结果:小于屏幕,放置在ImageView的左上角,并不会根据宽度比例放大。这应该是跟属性fitStart有关;但如果用FitXY,在Y方向拉伸太大,有马赛克。又没有属性是FitX。。。

3对进行等比例放大

[java] view plaincopyprint

Bitmap bmResult=null;

if((bmgetWidth()>0) && (bmgetHeight()>0))

{

int width = bmgetWidth();

int height = bmgetHeight();

Matrix matrix = new Matrix();

matrixpostScale(scale, scale);

bmResult = BitmapcreateBitmap(bm, 0, 0, width, height, matrix, true);

}

else

{

Systemoutprintln();

}

return bmResult;

结果:效果达到要求,会根据宽度的比例,调整到屏幕的大小,在X方向填充屏幕,在Y方向,按照等比放大。

当放大后的高度大于屏幕时,可以通过拖动显示。

4 RelativeLayout背景无法改变

RelativeLayout,设置了selector,但选中的时候,没有发生变化。网上查了下,原因是RelativeLayout没有设置成Clickable=true。添加设置后,选择生效,但是带来另外一个问题OnClickListener()失效, 具体代码如下:

XML文件:

[html] view plaincopyprint

<xml version="10" encoding="utf-8">

<RelativeLayout xmlns:android=">

item获取焦点后有一个放大的效果,做过的人应该都知道这里边会有一个bug,单纯放大的话会被后头的item遮挡住,这是因为界面绘制先后的问题,如果你试过调用bringToFront()的话,你会发现根本不起作用。那么怎么解决呢,答案就是重写RecyclerView的getChildDrawingOrder方法,该方法有个int型的返回值,这个返回值返回的就是当前需要绘制的view,讲到这里大家明白了吧,更改这个返回值就能够让咱选中的那个View最后绘制。

以上就是关于怎么让Android 浏览器焦点在文本输入框时不自动放大页面全部的内容,包括:怎么让Android 浏览器焦点在文本输入框时不自动放大页面、焦点焦距关系成像原理、android fitx 是谁的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9683644.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存