侧拉和第三方登陆,日夜
来源:互联网 发布:淘宝卖手工食品 编辑:程序博客网 时间:2024/04/29 21:51
权限:
<!-- QQ登录授权所需权限 --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
导入两个jar:
MainActivity 类:
public class MainActivity extends AppCompatActivity { private SlidingMenu menu; private int theme = 0; private TextView but; private ImageView qq; private static final String TAG = "MainActivity"; private static final String APP_ID = "1105602574";//官方获取的APPID private Tencent mTencent; private MainActivity.BaseUiListener mIUiListener; private UserInfo mUserInfo; private View include; private LinearLayout ll_2; private TextView zhuye; private TextView huiyuan; private TextView nikeName; private ImageView touxiang; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //切换主题必须放在onCreate()之前 if (savedInstanceState == null) { theme = UiUtilsa.getAppTheme(MainActivity.this); } else { theme = savedInstanceState.getInt("theme"); } setTheme(theme); setContentView(R.layout.activity_main); //传入参数APPID和全局Context上下文 mTencent = Tencent.createInstance(APP_ID,MainActivity.this.getApplicationContext()); ImageView im = (ImageView) findViewById(R.id.image_views); //点击监听 im.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { menu.toggle(); } }); Slidings(savedInstanceState); } private void Slidings(Bundle savedInstanceState) { menu = new SlidingMenu(this); menu.setMode(SlidingMenu.LEFT); //设置触摸的模式 /** * TOUCHMODE_FULLSCREEN装满屏幕 *TOUCHMODE_MARGIN 边缘 * TOUCHMODE_NONE 没有 */ menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.setShadowWidthRes(R.dimen.shadow_width); //menu.setShadowDrawable(R.color.colorAccent); //设置滑动的菜单的宽度 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); // 设置渐入渐出效果的值 menu.setFadeDegree(0.35f); menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); //为侧滑菜单设置布局 View view = View.inflate(MainActivity.this, R.layout.lete_cela, null); but = (TextView) view.findViewById(R.id.riye); qq = (ImageView) view.findViewById(R.id.qq); include = view.findViewById(R.id.include); ll_2 = (LinearLayout) view.findViewById(R.id.ll_2); nikeName = (TextView) view.findViewById(R.id.nikeName); touxiang = (ImageView) view.findViewById(R.id.touxiang); but.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { UiUtilsa.switchAppTheme(MainActivity.this); reload(); } }); menu.setMenu(view); } public void buttonLogin(View v){ ll_2.setVisibility(View.GONE); /**通过这句代码,SDK实现了QQ的登录,这个方法有三个参数,第一个参数是context上下文,第二个参数SCOPO 是一个String类型的字符串,表示一些权限 官方文档中的说明:应用需要获得哪些API的权限,由“,”分隔。例如:SCOPE = “get_user_info,add_t”;所有权限用“all” 第三个参数,是一个事件监听器,IUiListener接口的实例,这里用的是该接口的实现类 */ mIUiListener = new MainActivity.BaseUiListener(); //all表示获取所有权限 mTencent.login(MainActivity.this,"all", mIUiListener); } /** * 自定义监听器实现IUiListener接口后,需要实现的3个方法 * onComplete完成 onError错误 onCancel取消 */ private class BaseUiListener implements IUiListener { @Override public void onComplete(Object response) { Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show(); Log.e(TAG, "response:" + response); JSONObject obj = (JSONObject) response; try { String openID = obj.getString("openid"); String accessToken = obj.getString("access_token"); String expires = obj.getString("expires_in"); mTencent.setOpenId(openID); mTencent.setAccessToken(accessToken,expires); QQToken qqToken = mTencent.getQQToken(); mUserInfo = new UserInfo(getApplicationContext(),qqToken); mUserInfo.getUserInfo(new IUiListener() { @Override public void onComplete(Object response) { Log.e(TAG,"登录成功"+response.toString()); JSONObject obj = (JSONObject) response; try { String figureurl_1 = obj.getString("figureurl_qq_1"); String nickname = obj.getString("nickname"); include.setVisibility(View.VISIBLE); nikeName.setText(nickname); Glide.with(MainActivity.this).load(figureurl_1).into(touxiang); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { Log.e(TAG,"登录失败"+uiError.toString()); } @Override public void onCancel() { Log.e(TAG,"登录取消"); } }); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } } /** * 在调用Login的Activity或者Fragment中重写onActivityResult方法 * @param requestCode * @param resultCode * @param data */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == Constants.REQUEST_LOGIN){ Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener); } super.onActivityResult(requestCode, resultCode, data); } /** * 构造淡入淡出效果 */ public void reload() { Intent intent = getIntent(); overridePendingTransition(R.anim.activity_in, R.anim.activity_out);//进入动画 finish(); overridePendingTransition(R.anim.activity_in, R.anim.activity_out); startActivity(intent); }}在values的dimens.xml中添加<dimen name="slidingmenu_offset">60dp</dimen><dimen name="shadow_width">15dp</dimen>工具类: Preferencesa ,UiUtilsapublic class Preferencesa { //定义静态常量 private static final String shared_name = "user_guide"; private static SharedPreferences sp; //调用的方法 public static String getString(Context context, String key, String defaultValues) { SharedPreferences sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE); return sp.getString(key, defaultValues); } //调用的方法 public static void setString(Context context, String key, String Values) { SharedPreferences sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE); sp.edit().putString(key, Values).commit(); }}UiUtilsa类:
public class UiUtilsa { //获取主题 public static int getAppTheme(Context ctx) { String value = Preferencesa.getString(ctx, "activity_theme", "1"); switch (Integer.valueOf(value)) { case 1: return R.style.AppTheme;//白色主题 case 2: return R.style.AppTheme_Black; default: return R.style.AppTheme;//默认白色 } }//切换主题//当然也可以使用资源ID来进行标记 public static void switchAppTheme(Context ctx) { String value = Preferencesa.getString(ctx, "activity_theme", "1"); switch (Integer.valueOf(value)) { case 1: Preferencesa.setString(ctx, "activity_theme", "2"); break; case 2: Preferencesa.setString(ctx, "activity_theme", "1"); break; default: Preferencesa.setString(ctx, "activity_theme", "1"); break; } }}在res建一个anim创建两个xml:activity_out.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="0" android:fromAlpha="1.0" android:interpolator="@android:anim/decelerate_interpolator" android:toAlpha="0.0"> </alpha></set>activity_in.xml在values.xml下的styles.xml中添加:<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="0" android:fromAlpha="0.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0"></alpha></set>
<!--黑夜主题--><style name="AppTheme.Black" parent="Theme.AppCompat"></style>用到布局文件:侧拉的布局:lete_cala.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <include android:visibility="invisible" android:id="@+id/include" layout="@layout/itme_layout"></include> <LinearLayout android:id="@+id/ll_2" android:layout_width="match_parent" android:layout_height="170dp" android:background="#31413B" android:orientation="vertical"> <LinearLayout android:id="@+id/linea" android:layout_width="match_parent" android:layout_height="95dp" android:orientation="horizontal"> <ImageView android:id="@+id/qq" android:layout_marginTop="10dp" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:onClick="buttonLogin" android:src="@drawable/qq_sdk_login"/> <ImageView android:id="@+id/weinxi" android:layout_width="0dp" android:layout_height="80dp" android:layout_marginTop="10dp" android:layout_weight="1" android:src="@drawable/weixin_sdk_login"/> <ImageView android:id="@+id/weibo" android:layout_width="0dp" android:layout_height="80dp" android:layout_weight="1" android:layout_marginTop="10dp" android:src="@drawable/sina_sdk_login"/> </LinearLayout> <TextView android:id="@+id/wenzi" android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:layout_marginTop="10dp" android:text="支持更多登录方式" android:textColor="#ed4747" android:textSize="18dp"/> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="420dp" android:orientation="vertical"> <TextView android:id="@+id/zi1" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="主页" android:textSize="18sp" /> <TextView android:id="@+id/zi2" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="我的大会员" android:textSize="18sp" /> <TextView android:id="@+id/zi3" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="离线缓存" android:textSize="18sp" /> <TextView android:id="@+id/zi4" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="我的收藏" android:textSize="18sp" /> <TextView android:id="@+id/zi5" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="历史纪录" android:textSize="18sp" /> <TextView android:id="@+id/zi6" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="我的钱包" android:textSize="18sp" /> <TextView android:id="@+id/zi7" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="关注的人" android:textSize="18sp" /> <TextView android:id="@+id/zi8" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:drawableLeft="@mipmap/ic_launcher" android:gravity="center_vertical" android:text="应用推荐" android:textSize="18sp" /> <TextView android:id="@+id/riye" android:layout_width="match_parent" android:layout_height="45dp" android:layout_marginLeft="10dp" android:gravity="center_vertical" android:drawableLeft="@drawable/yejian" android:textSize="18sp" android:text="夜间"/> </LinearLayout></LinearLayout>qq用到的布局:itme_layout.xmlqq_sdk_login.png<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="170dp" android:orientation="vertical"> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="180dp" android:background="#FB7299" android:orientation="vertical"> <LinearLayout android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:layout_marginLeft="20dp" android:id="@+id/touxiang" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/> </LinearLayout> <TextView android:id="@+id/nikeName" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hotBitMapGG" android:textSize="20sp" /> <TextView android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通会员" android:textSize="20sp" /> <TextView android:layout_marginTop="10dp" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="银币45" android:textSize="20sp" /> </LinearLayout></LinearLayout>
sina_sdk_login.png
weixin_sdk_login.png
阅读全文
0 0
- 侧拉和第三方登陆,日夜
- slidingmenustyle侧拉和主题日夜切换
- 侧滑,日夜,第三方登录
- 支付宝和第三方登陆分享
- 第三方SlidingMenu侧拉菜单
- 第三方登陆 ,微信扫码登陆
- thinksns 第三方登陆
- 第三方授权登陆
- 第三方账号登陆
- QQ第三方登陆
- 第三方登陆总结
- 第三方登陆
- 第三方登陆
- QQ第三方登陆
- 第三方登陆问题
- Facebook第三方登陆
- 第三方登陆
- facebook第三方登陆
- 来听大师讲设计(上)
- 图层CALayer
- LaTeX学习笔记(一)—Hello World!
- Web项目,异步获取,数据展示乱码的问题笔记
- jvm 闲聊
- 侧拉和第三方登陆,日夜
- elasticsearch介绍集群,模拟横向扩展节点、节点宕机、改变分片
- uboot分析之Makefile(一)
- Class类文件的结构
- ss-libev 源码解析local篇(5):ss-local之remote_send_cb
- vb.net中usercontrol向外抛出事件和属性
- LinuxMint 下安装 tomcat8
- 自然语言处理模型(一):一文读懂TF-IDF
- JAVA生成验证码