`
runfeel
  • 浏览: 913689 次
文章分类
社区版块
存档分类
最新评论

新浪微博登陆2.0

 
阅读更多

问题: 点击新浪登陆的网页中的输入框无法弹软键盘。

解决:

mWebView.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});

原因新新浪接口的WeiboDialog没有获取焦点。


通过isFocusable()这个方法我们可以知道view是否具有接受焦点的资格,通过setFocusable().来设置view接受焦点的资格;

对应在触摸模式下,你可以调用isFocusableInTouchMode().来获知是否有焦点来响应点触,也可以通过setFocusableInTouchMode().来设置是否有焦点来响应点触的资格.

在Activity中,当我们按上下左右方向键时,view中的焦点也会移动,我们怎么控制他的移动顺序呢,在XML属性布局文件中,有四个属性: nextFocusDown , nextFocusLeft , nextFocusRight ,和nextFocusUp, 设置他们的值来明确焦点从当前界面移动下个界面的Id。例如:
<LinearLayout
android:orientation="vertical"
... >
<Button android:id="@+id/topBtn"
android:nextFocusUp="@+id/bottomBtn" //当焦点处在这个topBtn按钮上,再按向上方向键,焦点就会移动到bottomBtn按钮上。
... />
<Button android:id="@+id/bottomBtn"
android:nextFocusDown="@+id/topBtn" //当焦点处在这个bottomBtn按钮上,再按向下方向键,焦点就会移动到topBtn按钮上。
... />

</LinearLayout>

二.不让文本输入框默认获得焦点,弹出键盘占据我们的屏幕的方法

有时会遇到一种情况,在真机运行一个页面,焦点会默认在EditText上,然后自动弹出键盘来占据大半个屏幕。处理方法很简单。在配置文件中加一句:

<activity ...android:windowSoftInputMode="stateAlwaysHidden|adjustResize"/>
这样即可,意思是默认隐藏键盘输入法。

三 当有个可滚动的空间嵌套时,比如ScrollView 中放置了 ListView或者ScrollView 或者EditText,怎么实现我们想要的效果,这个问题答案正在寻找中,有遇到的这个问题的朋友希望你能帮帮忙

onInterceptTouchEvent()的机制:

  1. down事件首先会传递到onInterceptTouchEvent()方法
  2. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最终的目标view的onTouchEvent()处理
  3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
  4. 如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一层次的view的onTouchEvent()处理
  5. 如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递给该view的onTouchEvent()处理


1.设置属性(properties):比如,可以设置TextView类的一个实例的文本内容。不同的子类可以用来设置的属性与方法不同。注意:只有编译时能够检测到的属性才可以在XML布局管理(layout)文件中设置。
2.设置输入焦点(focus):为了响应用户输入,整个框架将处理移动的焦点。如果想把焦点强制指向某一个特定的视图,必须调用requestFocus()方法。
3.设置监听器(listener):在视图中,允许设置监听器来捕获用户感兴趣的某些事件。比如说, 在所有的视图中,无论视图是获得焦点还是失去焦点,都可以通过设置监听器来捕获。可以通过调用setOnFocusChangeListener(View.OnFocusChangeListener) 来注册一个监听器。在其他视图子类中,提供了一些更加特殊的监听器。比如,一个按键(Button)可以触发按键被按下的事件。
4.设置是否可视(visibility):可以通过调用setVisibility(int)来显示或者隐藏视图。

下面我以ImageButton为例来说一下如何使用setOnFocusChangeListener来实现focus的切换.

UI如图显示.当focus切换时, 在中间的TextView上显示每个ImageButton的内容.



代码如下:
public class MainMenu extends Activity {
private ImageButton btnLogin, btnSet, btnAbout, btnHelp, btnVis;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenu);
setTitle("Main Menu-Select One Item#");

// Get the buttons, and set listeners.
btnAbout = (ImageButton)findViewById(R.id.ibtnAbout);
btnAbout.setOnClickListener(listener);
btnAbout.setOnFocusChangeListener(focusListener);

//...

//default focus in Login button.
btnLogin.requestFocus();//Can not work! Y??? Any one knows this?

// Get the TextView to display text.
tvName = (TextView)findViewById(R.id.tvMenu);
tvName.setText("");
}

OnClickListener listener = new OnClickListener(){
public void onClick(View arg0){
switch(arg0.getId()){
case R.id.ibtnAbout:
tvName.setText("About");
Intent in = new Intent(MainMenu.this, about.class);
startActivity(in);
break;
//...
}
}
};

OnFocusChangeListener focusListener = new OnFocusChangeListener(){
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
switch(v.getId()){
case R.id.ibtnAbout:
tvName.setText("About");
break;
//....
}
}
}
};
}

这里有一个问题,我还是不明白. 希望有哪位朋友告知.当切换到此Activity的时候, 我希望默认的Focus是在Button Login上, 我调用btnLogin.requestFocus();doestn't work!


问题:
在代码中写了topButton.requestFocus();后,当程序运行时,上button没有获得焦点。

解决办法:
在初始化button时加入
topButton.setFocusable(true);(只加这个没有用,同样无法获得焦点)
topButton.setFocusableInTouchMode(true);(这个必须加,获得焦点和TouchMode有关)


分享到:
评论

相关推荐

    新浪微博SDK2.0

    《全面解析:新浪微博SDK2.0及其应用》 在当今互联网时代,社交媒体平台扮演着至关重要的角色,其中新浪微博作为中国的一大社交巨头,为开发者提供了丰富的API接口和SDK工具,便于开发者构建与微博平台深度集成的...

    新浪微博OAuth2.0登录

    本教程将详细阐述如何使用C#语言和MVC框架实现新浪微博的OAuth2.0登录流程。 首先,我们需要理解OAuth2.0的基本流程。OAuth2.0的核心是四类角色:资源所有者(用户)、资源服务器(如新浪微博)、客户端(你的应用...

    新浪微博OAuth2.0API源码

    新浪微博OAuth2.0API源码 一个更方便,更快速的C#SDK,希望能帮助更多的朋友学习和使用 新浪微博OAuth2.0API使用流程: 1、根据需要求修改配置文件(Wbm.SinaV2.config)。 2、注册ApplicationKey。(参考...

    新浪微博OAuth2.0认证实现登陆

    这篇文档将详细介绍如何使用OAuth2.0协议实现新浪微博的登录功能。OAuth2.0是目前广泛采用的授权框架,它允许第三方应用在用户许可的情况下访问其存储在特定服务提供商(如新浪微博)上的数据,而无需获取用户的...

    IOS新浪微博Oauth2.0授权demo

    在iOS平台上实现新浪微博的OAuth2.0授权是一个常见的需求,特别是在开发社交应用或者需要与微博进行数据交互的应用中。OAuth2.0是一种授权框架,它允许第三方应用在用户许可的情况下,安全地访问用户在特定服务(如...

    新浪微博OAuth2.0分享

    【标题】:“新浪微博OAuth2.0分享” 在互联网社交领域,新浪微博是中国极具影响力的社交媒体平台之一。为了方便开发者集成微博功能到自己的应用中,新浪提供了OAuth2.0授权协议的SDK,即“weiboSDK2.1_130806.jar...

    新浪微博OAuth2.0API(Wbm.SinaV2API)V1.0.10.31

    微博OAuth2.0 API是新浪微博为开发者提供的授权框架,它允许第三方应用在用户授权的情况下访问其部分数据,如发布微博、获取用户信息等。Wbm.SinaV2API则是基于C#开发的一个SDK,为开发者提供了一个高效、便捷的方式...

    android新浪微博Oauth2.0分享文字和图片

    在Android平台上进行社交媒体分享,尤其是针对新浪微博这样的大型社交平台,Oauth2.0协议的集成是必不可少的。本文将深入探讨如何在Android应用中实现基于Oauth2.0的新浪微博文字和图片分享功能。 首先,我们需要...

    使用WebView实现新浪微博Oauth2.0认证(android)

    在Android开发中,有时我们需要集成第三方社交平台的功能,如新浪微博,以便用户能够通过自己的社交账号登录或分享内容。本文将详细介绍如何使用WebView组件实现新浪微博的OAuth2.0认证过程,这是一个安全、便捷的...

    新浪腾讯微博oauth2.0登录授权及转发实例

    2. 新浪微博OAuth2.0授权流程 (1) 注册应用:首先在新浪微博开放平台上注册应用,获取App Key(Consumer Key)和App Secret(Consumer Secret)。 (2) 引导用户授权:在应用中引导用户跳转到新浪授权页面,带上App ...

    OAuth2.0新浪微博简单示例

    这个“OAuth2.0新浪微博简单示例”是为初学者设计的,旨在帮助理解OAuth2.0的工作原理及其在实际应用中的实现方式,特别是与新浪微博的集成。 首先,我们来深入了解一下OAuth2.0的核心概念: 1. **客户端(Client...

    新浪微博登录Sinaoauth2.0

    本文将深入探讨基于SinaOAuth2.0的新浪微博登录系统,它为开发者提供了安全、便捷的接口来实现用户授权和信息获取。 SinaOAuth2.0是新浪微博提供的一个开放授权框架,遵循OAuth2.0标准,允许第三方应用在用户的授权...

    UCHOME 2.0新浪微博整合登录插件|QQ登录|人人网登录

    UCHOME 2.0作为一个流行的社区建站系统,提供了丰富的插件支持,其中就包括了对新浪微博、QQ和人人网等主流社交媒体平台的整合登录功能。这一功能使得用户无需注册新账号,可以直接使用已有的社交网络账号登录网站,...

    Android仿新浪微博oauth2.0授权界面实现代码(2)

    本文将详细讲解如何在Android应用中仿照新浪微博实现OAuth2.0授权界面。 首先,OAuth2.0是一种广泛使用的授权框架,允许第三方应用在用户许可的情况下访问其在特定服务(如微博)上的资源,而无需获取用户的用户名...

    新浪微博登陆开发流程 宋正河整理

    总结,宋正河整理的新浪微博登录开发流程涵盖了从申请开发者资格、OAuth2.0授权、获取Access Token到用户信息处理的全过程。通过理解和实践这个流程,开发者能够为自己的应用添加安全且便捷的新浪微博登录功能,提升...

    新浪微博登录网站

    标题“新浪微博登录网站”指的是利用新浪开放平台提供的API接口实现用户在个人网站上通过微博账号进行登录的功能。在这个过程中,开发者需要对微博的OAuth 2.0授权协议有深入理解,以便安全、有效地获取用户的授权...

    新浪微博php sdk文件

    描述中提到的"用新浪微博登录第三方网站",是利用OAuth 2.0协议实现的。OAuth是开放标准,用于授权第三方应用访问用户在某一服务上的数据,而无需获得用户的用户名和密码。在新浪微博PHP SDK中,我们主要会用到授权...

    2012沈大海android新浪微博2.5版本Oauth2.0

    标题 "2012沈大海android新浪微博2.5版本Oauth2.0" 指的是一个关于在Android平台上开发的新浪微博应用,该应用基于OAuth 2.0协议进行用户授权和登录。在这个版本中,开发者沈大海可能对授权流程进行了优化和改进,以...

    ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录 <font color=red>原创</font>

    ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录是一个常见的功能需求,特别是在构建社交网络应用或者需要用户通过已有社交账号快速注册登录的网站时。OAuth2.0是一种授权框架,允许第三方应用在用户授权的情况下...

    phpcmsv9新浪微博登陆

    【phpcmsv9新浪微博登陆】是一个教程和源码集合,旨在帮助用户在phpcmsv9内容管理系统中集成新浪微博登录功能。这个教程对于那些希望在自己的网站上提供社交媒体登录选项的开发者来说非常有用,特别是对使用phpcmsv9...

Global site tag (gtag.js) - Google Analytics