diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 867e1bff6c..0cf8cca95d 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -8,12 +8,15 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.graphics.Bitmap; import android.os.Handler; +import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; import android.text.Html; import android.text.Spanned; import android.view.Display; import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -325,6 +328,9 @@ public class DialogUtils { public static void showWarningDialog(Context context, String title, CharSequence msg, String cancel, String confirm, final ConfirmListener cmListener, final CancelListener clListener) { + showAlertDialog(context, title, msg, cancel, confirm, cmListener, clListener); + if (true) return; // TODO TEST + if (isShow) { return; } @@ -434,6 +440,58 @@ public class DialogUtils { disclaimerDialog.show(); } + /** + * Material Design 风格弹窗 + * + * @param context + * @param title 标题 + * @param message 内容 + * @param positive 确认按钮文本 + * @param negative 取消按钮文本 + * @param cmListener 确认按钮监听 + * @param clListener 取消按钮监听 + */ + + public static void showAlertDialog(Context context, String title, CharSequence message + , String positive, String negative, final ConfirmListener cmListener, final CancelListener clListener) { + + AlertDialog alertDialog = new AlertDialog.Builder(context, R.style.GhAlertDialog) + .setTitle(title) + .setMessage(message) + .setPositiveButton(positive, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (clListener != null) { + clListener.onCancel(); + } + } + }) + .setNegativeButton(negative, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + if (cmListener != null) { + cmListener.onConfirm(); + } + } + }) + .create(); + alertDialog.show(); + + TextView mesage = (TextView) alertDialog.findViewById(android.R.id.message); + Button positiveBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE); + Button negativeBtn = alertDialog.getButton(android.app.AlertDialog.BUTTON_NEGATIVE); + + positiveBtn.setTextSize(13); + positiveBtn.setTextColor(ContextCompat.getColor(context, R.color.theme)); + negativeBtn.setTextSize(13); + negativeBtn.setTextColor(ContextCompat.getColor(context, R.color.theme)); + if (mesage != null) { + mesage.setTextSize(13); + mesage.setTextColor(ContextCompat.getColor(context, R.color.title)); + } + + } + public interface ConfirmListener { void onConfirm(); } diff --git a/app/src/main/java/com/gh/common/util/LoginUtils.java b/app/src/main/java/com/gh/common/util/LoginUtils.java index 4a15dd4d32..44cb9787d0 100644 --- a/app/src/main/java/com/gh/common/util/LoginUtils.java +++ b/app/src/main/java/com/gh/common/util/LoginUtils.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Context; import android.widget.Toast; +import com.gh.base.AppController; import com.gh.common.constant.Config; import com.sina.weibo.sdk.WbSdk; import com.sina.weibo.sdk.auth.AuthInfo; @@ -23,6 +24,10 @@ import com.tencent.tauth.UiError; import org.json.JSONException; import org.json.JSONObject; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.text.SimpleDateFormat; /** @@ -48,7 +53,7 @@ public class LoginUtils { private LoginUtils(Context context) { mTencent = Tencent.createInstance(Config.TENCENT_APPID, context); //初始化QQ分享 mIWXAPI = WXAPIFactory.createWXAPI(context, Config.WECHAT_APPID, true); //初始化微信分享 - WbSdk.install(context,new AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", SCOPE)); + WbSdk.install(context, new AuthInfo(context, Config.WEIBO_APPKEY, "http://www.sina.com", SCOPE)); mSsoHandler = new SsoHandler((Activity) context); mContext = context; Utils.log(LoginUtils.class.getSimpleName(), "initLogin"); @@ -73,7 +78,7 @@ public class LoginUtils { Utils.log(LoginUtils.class.getSimpleName(), "QQLoginComplete::" + s); try { mTencent.setOpenId(jsonObject.getString("openid")); - mTencent.setAccessToken(jsonObject.getString("access_token"),jsonObject.getString("expires_in")); + mTencent.setAccessToken(jsonObject.getString("access_token"), jsonObject.getString("expires_in")); } catch (JSONException e) { e.printStackTrace(); } @@ -164,6 +169,13 @@ public class LoginUtils { } } }); + + AppController.MAIN_EXECUTOR.execute(new Runnable() { + @Override + public void run() { + getWeiBoUserInfo(token.getToken(), token.getUid()); + } + }); } @Override @@ -177,6 +189,34 @@ public class LoginUtils { } } + private void getWeiBoUserInfo(String accessToken, String uid) { + String path = "https://api.weibo.com/2/users/show.json?access_token=" + accessToken + "&uid=" + uid; + Utils.log(LoginUtils.class.getSimpleName(), "getWeiBoUserInfo-url::" + path); + + try { + URL url = new URL(path); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setConnectTimeout(5000); + conn.setRequestMethod("GET"); + conn.setDoInput(true); + int code = conn.getResponseCode(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + Utils.log(LoginUtils.class.getSimpleName(), "getWeiBoUserInfo-RequestCode::" + code); + if (code == 200) { + InputStream is = conn.getInputStream(); + while ((len = is.read(buffer)) != -1) { + baos.write(buffer, 0, len); + } + String str = new String(baos.toByteArray()); + Utils.log(LoginUtils.class.getSimpleName(), "getWeiBoUserInfo-Body::" + str); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * 显示当前 Token 信息。 * @@ -187,7 +227,7 @@ public class LoginUtils { new java.util.Date(mAccessToken.getExpiresTime())); String format = "Token:%1$s \\n有效期:%2$s"; String token = String.format(format, mAccessToken.getToken(), date); - Utils.log( LoginUtils.class.getSimpleName(), "::WB_TOKEN::" + token); + Utils.log(LoginUtils.class.getSimpleName(), "::WB_TOKEN::" + token); String message = String.format(format, mAccessToken.getToken(), date); if (hasExisted) { message = "Token 仍在有效期内,无需再次登录。" + "\n" + message; diff --git a/app/src/main/java/com/gh/gamecenter/LoginActivity.java b/app/src/main/java/com/gh/gamecenter/LoginActivity.java index a9688723c3..9c5149614a 100644 --- a/app/src/main/java/com/gh/gamecenter/LoginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LoginActivity.java @@ -1,6 +1,7 @@ package com.gh.gamecenter; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -8,6 +9,7 @@ import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; +import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextWatcher; import android.view.View; @@ -38,6 +40,8 @@ public class LoginActivity extends BaseActivity { TextView mLoginCaptcha; @BindView(R.id.login_hint) TextView mLoginHint; + @BindView(R.id.login_btn) + TextView mLoginBtn; Handler mHandler = new Handler() { @Override @@ -90,7 +94,7 @@ public class LoginActivity extends BaseActivity { RelativeLayout reuseActionbar = (RelativeLayout) mContentView.findViewById( R.id.reuse_actionbar); reuseActionbar.addView(oldUser, params); - + mLoginPassEt.addTextChangedListener(new LoginTextWatcher(mLoginPassEt)); mLoginPhoneEt.addTextChangedListener(new LoginTextWatcher(mLoginPhoneEt)); @@ -104,7 +108,7 @@ public class LoginActivity extends BaseActivity { }); } - @OnClick({R.id.login_captcha, R.id.login_hint}) + @OnClick({R.id.login_captcha, R.id.login_hint, R.id.login_btn}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.login_captcha: @@ -122,7 +126,24 @@ public class LoginActivity extends BaseActivity { } break; case R.id.login_hint: + AlertDialog.Builder dialog = new AlertDialog.Builder(this); + dialog.setTitle("注销登录"); + dialog.setMessage("退出帐号即会回到游客状态"); + dialog.setPositiveButton("确认退出", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + toast("确认退出"); + } + }); + dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + toast("取消"); + } + }); + dialog.show(); break; + case R.id.login_btn: } } diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index 3fac005b8a..efa309db86 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -3,14 +3,15 @@ package com.gh.gamecenter; import android.app.Activity; import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.v7.app.AlertDialog; import android.view.View; import android.view.View.OnClickListener; -import android.view.Window; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; @@ -241,35 +242,64 @@ public class SettingActivity extends BaseActivity implements OnClickListener { //设置正文字号 private void fontSize() { - final Dialog dialog = new Dialog(this); View inflate = View.inflate(this, R.layout.dialog_font_size, null); - TextView tv_negative = (TextView) inflate.findViewById(R.id.font_size_negative); - TextView tv_positive = (TextView) inflate.findViewById(R.id.font_size_positive); final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); ((RadioButton) (radioGroup.getChildAt(checkSizeIndex - 1))).setChecked(true); + AlertDialog alertDialog = new AlertDialog.Builder(this, R.style.GhAlertDialog) + .setTitle(getString(R.string.font_primary)) + .setPositiveButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { - tv_negative.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - dialog.cancel(); - } - }); - tv_positive.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; + } + }) + .setNegativeButton("确认", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; - if (checkSizeIndex == 0) { - checkSizeIndex = 4; - } - dialog.cancel(); - saveCurrentSetting(); - fontTextSize(checkSizeIndex); - } - }); - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(inflate); - dialog.show(); + if (checkSizeIndex == 0) { + checkSizeIndex = 4; + } + dialog.cancel(); + saveCurrentSetting(); + fontTextSize(checkSizeIndex); + } + }) + .setView(inflate) + .create(); + alertDialog.show(); + + +// final Dialog dialog = new Dialog(this); +// View inflate = View.inflate(this, R.layout.dialog_font_size, null); +// TextView tv_negative = (TextView) inflate.findViewById(R.id.font_size_negative); +// TextView tv_positive = (TextView) inflate.findViewById(R.id.font_size_positive); +// final RadioGroup radioGroup = (RadioGroup) inflate.findViewById(R.id.font_size_radiogroup); +// ((RadioButton) (radioGroup.getChildAt(checkSizeIndex - 1))).setChecked(true); +// +// tv_negative.setOnClickListener(new OnClickListener() { +// @Override +// public void onClick(View v) { +// dialog.cancel(); +// } +// }); +// tv_positive.setOnClickListener(new OnClickListener() { +// @Override +// public void onClick(View v) { +// checkSizeIndex = radioGroup.getCheckedRadioButtonId() % 4; +// +// if (checkSizeIndex == 0) { +// checkSizeIndex = 4; +// } +// dialog.cancel(); +// saveCurrentSetting(); +// fontTextSize(checkSizeIndex); +// } +// }); +// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); +// dialog.setContentView(inflate); +// dialog.show(); } // 清除缓存 diff --git a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java index bb2cd875f7..15af81aca5 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestSelectActivity.java @@ -18,7 +18,7 @@ public class SuggestSelectActivity extends BaseActivity { @NonNull public static Intent getIntent(Context context) { - Intent intent = new Intent(context, SuggestionActivity.class); + Intent intent = new Intent(context, SuggestSelectActivity.class); return intent; } diff --git a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java index 1332bd8267..8b4097fa4c 100644 --- a/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java +++ b/app/src/main/java/com/gh/gamecenter/ViewImageActivity.java @@ -58,10 +58,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import butterknife.BindView; import butterknife.ButterKnife; - /** * 查看游戏截图页面 * @@ -70,10 +68,8 @@ import butterknife.ButterKnife; //TODO 处理这里activity到统一主题 public class ViewImageActivity extends Activity implements OnPageChangeListener { - @BindView(R.id.viewimage_vp_show) - Gh_ViewPager mViewimageVp; - @BindView(R.id.viewimage_slide_line) - View mViewimageLine; + private Gh_ViewPager mViewimageVp; + private View mViewimageLine; private ViewImageAdapter adapter; private RelativeLayout.LayoutParams rparams; @@ -158,6 +154,9 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener //TODO activity 没继承base之前,可是木有ButterKnife的。。。。 ButterKnife.bind(this); + mViewimageVp = (Gh_ViewPager) findViewById(R.id.viewimage_vp_show); + mViewimageLine = findViewById(R.id.viewimage_slide_line); + imagePipeline = Fresco.getImagePipeline(); DisplayMetrics outMetrics = new DisplayMetrics(); @@ -169,7 +168,7 @@ public class ViewImageActivity extends Activity implements OnPageChangeListener rparams.bottomMargin = DisplayUtils.dip2px(getApplicationContext(), 10); rparams.leftMargin = width * current; mViewimageLine.setLayoutParams(rparams); - + adapter = new ViewImageAdapter(); mViewimageVp.setAdapter(adapter); mViewimageVp.setCurrentItem(current); diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index 3c98ddbfdf..ecea4b73d0 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -100,7 +100,7 @@ public class PersonalFragment extends BaseFragment { LoginUtils.getInstance(getActivity()).QQLogin(); break; case R.id.personal_login_wechat: - LoginUtils.getInstance(getActivity()).WCLogin(); + changeLoginState(true); break; case R.id.personal_login_weibo: LoginUtils.getInstance(getActivity()).WeiBoLogin(); @@ -138,4 +138,22 @@ public class PersonalFragment extends BaseFragment { } } + private void changeLoginState(boolean isLogin) { + if (isLogin) { + mLoginQqIcon.setImageResource(R.drawable.personal_collection_icon); + mLoginQqTv.setText("收藏"); + mLoginWechatIcon.setImageResource(R.drawable.personal_sign_icon); + mLoginWechatTv.setText("签到"); + mLoginWeiboIcon.setImageResource(R.drawable.personal_message_icon); + mLoginWeiboTv.setText("消息"); + } else { + mLoginQqIcon.setImageResource(R.drawable.qq_login_icon); + mLoginQqTv.setText(getString(R.string.QQ)); + mLoginWechatIcon.setImageResource(R.drawable.wechat_login_icon); + mLoginWechatTv.setText(getString(R.string.wechat)); + mLoginWeiboIcon.setImageResource(R.drawable.weibo_login_icon); + mLoginWeiboTv.setText(getString(R.string.sina_weibo)); + } + } + } diff --git a/app/src/main/res/drawable-hdpi/personal_collection_icon.png b/app/src/main/res/drawable-hdpi/personal_collection_icon.png index 1d530a27c7..fb123a1963 100644 Binary files a/app/src/main/res/drawable-hdpi/personal_collection_icon.png and b/app/src/main/res/drawable-hdpi/personal_collection_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/personal_message_icon.png b/app/src/main/res/drawable-hdpi/personal_message_icon.png index 1e4252af0f..59dd19d304 100644 Binary files a/app/src/main/res/drawable-hdpi/personal_message_icon.png and b/app/src/main/res/drawable-hdpi/personal_message_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/personal_sign_icon.png b/app/src/main/res/drawable-hdpi/personal_sign_icon.png index 9fa99dfec9..0e8fc9ac8e 100644 Binary files a/app/src/main/res/drawable-hdpi/personal_sign_icon.png and b/app/src/main/res/drawable-hdpi/personal_sign_icon.png differ diff --git a/app/src/main/res/drawable-hdpi/qq_login_icon.png b/app/src/main/res/drawable-hdpi/qq_login_icon.png index 912058c532..a458aa9440 100644 Binary files a/app/src/main/res/drawable-hdpi/qq_login_icon.png and b/app/src/main/res/drawable-hdpi/qq_login_icon.png differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 7a509513e7..d73921ba3b 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -66,6 +66,7 @@ + android:overScrollMode = "never" /> - - - - - - @@ -47,7 +25,7 @@ android:layout_marginTop = "3dp" android:background = "@drawable/reuse_listview_item_style" android:text = "@string/font_medium" - android:textSize = "15sp" /> + android:textSize = "14sp" /> + android:textSize = "16sp" /> + android:textSize = "18sp" /> - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 7f06a15ed4..00045f7af3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -87,4 +87,8 @@ @color/hint + \ No newline at end of file