侧拉和第三方登陆,日夜

来源:互联网 发布:淘宝卖手工食品 编辑:程序博客网 时间: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 ,UiUtilsa
public 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
<?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>

在values.xml下的styles.xml中添加:
<!--黑夜主题--><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.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="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>

qq_sdk_login.png
sina_sdk_login.png
weixin_sdk_login.png