三星S8登录UI图片无法放大求助:自定义h692dp布局未生效
三星S8设备登录UI图片显示过小,自定义h692dp布局未生效问题
我碰到个头疼的问题:三星S8的屏幕DP高度比较大,导致登录UI里的图片显示得特别小。我先通过这段代码计算出它的DP高度是692:
DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); float dpHeight = displayMetrics.heightPixels / displayMetrics.density; Log.d("checkheightdp",dpHeight+"");
之后我创建了layout-h692dp布局,专门增大了图片的高度,但奇怪的是应用还是加载默认布局,图片根本没法放大。
以下是LoginActivity的完整代码:
public class LoginActivity extends AppCompatActivity { private EditText email, psd; public ImageView deleteEmail; public ImageView deletePsd; public ImageView contactUs; GlobalProvider globalProvider; private int a = 0; private Button sign_in_button, tourist_in_button; private List<String> history = new ArrayList<String>(); private String usernameStr, newVersion = "x"; public static String character = "character"; private ConnectivityManager mConnectivityManager; private NetworkInfo netInfo; private ProgressDialog dialog; public Thread thread; private BroadcastReceiver myNetReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); netInfo = mConnectivityManager.getActiveNetworkInfo(); if (netInfo == null) { Toast.makeText(LoginActivity.this, "网络链接不可用!", Toast.LENGTH_SHORT).show(); } } } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); globalProvider = GlobalProvider.getInstance(LoginActivity.this); IntentFilter mFilter = new IntentFilter(); mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(myNetReceiver, mFilter); //找到对象email、psd、sign_in_button并绑定监听事件 email = (EditText) findViewById(R.id.email); psd = (EditText) findViewById(R.id.psd); contactUs = (ImageView) findViewById(R.id.contact_us); sign_in_button = (Button) findViewById(R.id.sign_in_button); tourist_in_button = (Button) findViewById(R.id.tourist_in_button); deleteEmail = (ImageView) findViewById(R.id.deleteEmail); deletePsd = (ImageView) findViewById(R.id.deletePsd); // gview=(GridView) findViewById(R.id.grid_layout); // ImageAdapter imgAdapter=new ImageAdapter(LoginActivity.this); //gview.setAdapter(imgAdapter); contactUs.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(LoginActivity.this, ContactActivity.class); startActivity(intent); } }); deleteEmail.setVisibility(View.GONE); deletePsd.setVisibility(View.GONE); try { findHistoryList(); } catch (IOException e) { e.printStackTrace(); } email.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { deleteEmail.setVisibility(View.VISIBLE); } else { deleteEmail.setVisibility(View.GONE); } } }); psd.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { deletePsd.setVisibility(View.VISIBLE); } else { deletePsd.setVisibility(View.GONE); } } }); deleteEmail.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { email.setText(""); } }); deletePsd.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { psd.setText(""); } }); sign_in_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (email.getText() == null || email.getText().toString().equals("") || psd.getText() == null || email.getText().toString().equals("")) { new AlertDialog.Builder(LoginActivity.this) .setMessage(getString(R.string.notempty)) .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }).show(); } else { try { setHistoryList(); } catch (IOException e) { e.printStackTrace(); } dialog = new ProgressDialog(LoginActivity.this); dialog.setMessage(getString(R.string.loging)); dialog.show(); sign_in_button.setEnabled(false); loginAction(v); } } }); //为sign_in_button绑定监听事件,调用loginAction(v) tourist_in_button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dialog = new ProgressDialog(LoginActivity.this); dialog.setMessage(getString(R.string.loging)); dialog.show(); sign_in_button.setEnabled(false); loginActionTourist(v); } }); } public static void setCharacter(Context context, String cha) { SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(context); SharedPreferences.Editor editor = settings.edit(); editor.putString(character, cha); editor.commit(); } public static String getToken(Context context) { SharedPreferences settings = PreferenceManager .getDefaultSharedPreferences(context); String cha = settings.getString(character, ""/*default value is ""*/); //Log.v("err", tokenStr); return cha; } //创建loginAction()方法 public void loginAction(View view) { //分别把email、psd的值传递给usernameStr、passwordStr final String usernameStr = email.getText().toString(); String passwordStr = psd.getText().toString(); Log.d("checkentries",usernameStr+" "+passwordStr); setCharacter(this, "user"); // Log.d("chkpassword",passwordStr); //GlobalProvider.getInstance().character = Map<String, String> params = new HashMap<>(); params.put("password", passwordStr); params.put("email",usernameStr ); CustomRequest jsonObjectRequest = new CustomRequest(Request.Method.POST, loginUrlStr, params, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { try { Log.d("responsevolley", response.getString("token")); dialog.dismiss(); globalProvider.IsLoging = true; sign_in_button.setEnabled(true); String token; token = response.getString("token"); token = token.replaceAll("\"", "");//把token中的"\""全部替换成"" Constants.setToken(LoginActivity.this, token); globalProvider.isLogined=true; Intent intent = new Intent(LoginActivity.this, MainActivity.class); intent.putExtra("isLogin", usernameStr); startActivity(intent); //this.setResult(Activity.RESULT_OK);//为结果绑定Activity.RESULT_OK finish(); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("errorvolley", error.toString()); dialog.dismiss(); new AlertDialog.Builder(LoginActivity.this) .setMessage(getString(R.string.errorId)) .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }).show(); sign_in_button.setEnabled(true); } }); globalProvider.addRequest(jsonObjectRequest); } public void loginActionTourist(View view) { usernameStr = "guest@veg.com"; String passwordStr = "12345678"; setCharacter(this, "tourist"); globalProvider.isLogined = true; // GlobalProvider.getInstance().character = "tourist"; // 绑定参数 Map<String,String> params = new HashMap(); params.put("email", usernameStr); params.put("password", passwordStr); CustomRequest customRequest=new CustomRequest(Request.Method.POST, loginUrlStr, params, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { dialog.dismiss(); globalProvider.IsLoging = true; tourist_in_button.setEnabled(true); String token; try { token = response.getString("token"); token = token.replaceAll("\"", ""); Constants.setToken(LoginActivity.this, token); } catch (JSONException e) { e.printStackTrace(); } //把token中的"\""全部替换成"" Intent intent = new Intent(LoginActivity.this, MainActivity.class); intent.putExtra("isLogin", usernameStr); startActivity(intent); //this.setResult(Activity.RESULT_OK);//为结果绑定Activity.RESULT_OK finish(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { dialog.dismiss(); new AlertDialog.Builder(LoginActivity.this) .setMessage(getString(R.string.errorId)) .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).show(); tourist_in_button.setEnabled(true); } }); } private void findHistoryList() throws IOException { File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/EasybuyCustomer.txt"); FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); BufferedReader br = new BufferedReader(isr); String s = null; while ((s = br.readLine()) != null) { history.add(s); //System.out.println(arrs[0] + " : " + arrs[1] + " : " + arrs[2]); } if (history.size() > 0) { email.setText(history.get(0)); psd.setText(history.get(1)); } br.close(); isr.close(); fis.close(); } public void setHistoryList() throws IOException { FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + "/EasybuyCustomer.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedWriter bw = new BufferedWriter(osw); bw.write(""); bw.write(email.getText().toString()); bw.newLine(); bw.write(psd.getText().toString()); bw.newLine(); bw.close(); osw.close(); fos.close(); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { hideSoftInput(v.getWindowToken()); } } return super.dispatchTouchEvent(ev); } private boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] l = { 0, 0 }; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { return false; } else { return true; } } return false; } private void hideSoftInput(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //按下键盘上返回按钮 if(keyCode == KeyEvent.KEYCODE_BACK){ new AlertDialog.Builder(this) .setMessage(getString(R.string.youconfirmtologout)) .setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setPositiveButton(getString(R.string.confirm), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { a=a+1; finish(); } }).show(); return true; }else{ return super.onKeyDown(keyCode, event); } } @Override protected void onDestroy() { super.onDestroy(); this.unregisterReceiver(myNetReceiver); if(a>0){ System.exit(0); } a=0; } }
附上登录UI截图:
内容的提问来源于stack exchange,提问作者user3792429
相关产品推荐
相关产品推荐

