2016-05-27 6 views
0

Meine App hat eine Bildansicht und eine Schaltfläche, wenn ich die Schaltfläche berühren, die Bildansicht zum Beispiel unsichtbar oder in einem anderen ändern. Das Problem ist, wenn ich die App schließe und den ursprünglichen Zustand der Bildansicht wieder öffne, will ich den neuen Zustand der Bildansicht speichern, aber ich weiß nicht wie, ich brauche geteilte Präferenzen oder existiere auf andere Weise ? VieleSpeichern Sie eine Bildansicht in Android Studio

Mein Code:

public class MainActivity extends Activity { 

    ImageView iv1; 
    Button b1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     iv1=(ImageView)findViewById(R.id.iv1); 
     b1=(Button)findViewById(R.id.b1); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public void a(View view){ 
     iv1.setVisibility(View.INVISIBLE); 
    } 
} 

Antwort

0

Es ist sehr einfach mit SharedPreferences zu tun:

private static final String KEY_VISIBILITY = "image_visibility"; 

private Button mButton; 
private ImageView mImageView; 

private SharedPreferences mSharedPreferences; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mSharedPreferences = getPreferences(Context.MODE_PRIVATE); 

    mButton = (Button) findViewById(R.id.b1); 
    mImageView = (ImageView) findViewById(R.id.iv1); 

    mImageView.setVisibility((mSharedPreferences.getBoolean(KEY_VISIBILITY, true) 
      ? View.VISIBLE : View.INVISIBLE); 
} 

public void onImageViewClick(View view) { 
    boolean visibile = mImageView.getVisibility == View.VISIBLE; 
    mImageView.setVisibility(visible ? View.INVISIBLE : View.VISIBLE); 

    mSharedPreferences.edit().putBoolean(KEY_VISIBILITY, !visible).apply(); 
} 
0

Wenn Sie die App zu schließen oder es wird gezwungen, von OS zu schließen, wenn der Speicher Warnung empfängt, werden alle Instanzvariablen verloren, und die App neu gestartet, wenn wieder geöffnet.

Um zu tun, was Sie wollen, müssen Sie den ImageView-Status in einem konsistenten Speicher halten. SharedPreferences sind perfekt für diese Situationen, speichern Sie den Wert jedes Mal, wenn Sie auf die Schaltfläche klicken (Sie können einen Boolean für den sichtbaren/unsichtbaren Status oder die Bildreferenzzeichenfolge [url, lokaler Dateipfad ..]) speichern. Dann sollten Sie in onCreate nach findViewById Rufen Sie den gespeicherten Status aus den Einstellungen ab und rendern Sie Ihr ImageView nach Bedarf.

0
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); 
      frameLayout_forBitmap.setDrawingCacheEnabled(true); 
      frameLayout_forBitmap.buildDrawingCache(); 
      Bitmap cache = frameLayout_forBitmap.getDrawingCache(); 
      try { 
       FileOutputStream fileOutputStream = new FileOutputStream(GlobalConfig.FilePath+"/Pic_"+ simpleDateFormat.format(new Date())+".jpg"); 
       cache.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream); 
       fileOutputStream.flush(); 
       fileOutputStream.close(); 
       Toast.makeText(this, "Image Save", Toast.LENGTH_SHORT).show(); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } finally { 
       frameLayout_forBitmap.destroyDrawingCache(); 
      } 
Verwandte Themen