
只能通过设置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 是谁的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)