Android:Orientation更改擦除对ImageView的修改 [英] Android: Orientation changes erase modifications made to my ImageView

查看:161
本文介绍了Android:Orientation更改擦除对ImageView的修改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有app我在其中有ImageView。我打开新的活动,用手指画一些东西,这个位图返回到我的ImageView。一切都很好但是当我现在改变方向时,我对ImageView的活动是重绘或重新启动,而imageview是空的。我尝试了一切,我尝试SaveState并恢复状态,尝试configurationChange等,但没有任何工作...

I have app in which I have ImageView. I open new activity, where I paint something by finger and this bitmap return to my ImageView. everything is ok but when I change orientation now, my activity with ImageView is repaint or restart and imageview is empty. I try everything, I try SaveState and restore state, try configurationChange, and other, but nothing is working...

package jilova.Android.TextFolder;

import java.io.ByteArrayOutputStream;

import jilova.Android.Enums;
import jilova.Android.R;
import jilova.Android.DatabaseFolder.LocalDB;
import jilova.Android.DatabaseFolder.RequestRow;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.Toast;

public class Text extends Activity{

    private static EditText t1;
    private static EditText t2;
    private static EditText t3;
    private static EditText t4;
    private static ImageView iv1;
    private static Context c;
    private static Activity ac;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.text);

        Object o = this.getLastNonConfigurationInstance();
        if(o!=null)
        {
            Enums.sign=(Bitmap)o;
        }

        c=this.getApplicationContext();
        ac=this;

        ImageView iv = (ImageView)this.findViewById(R.id.imageView1);
        iv.setDrawingCacheEnabled(true);
        t1 = (EditText)this.findViewById(R.id.TEXTNote);
        t2 = (EditText)this.findViewById(R.id.TextET2);
        t3 = (EditText)this.findViewById(R.id.TextET3);
        t4 = (EditText)this.findViewById(R.id.TextET4);

        //iv.setImageBitmap(Bitmap.createScaledBitmap(Enums.sign, iv.getWidth(), iv.getHeight(), false).copy(Config.ARGB_8888, true));

    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){

        }
        // Checks whether a hardware keyboard is available
        if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {

        } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {

        }
    }





    public static RequestRow getData()
    {
        RequestRow row = new RequestRow();
        row.SetREQUESTNOTE(t1.getText().toString());
        row.SetREQUESTTYPEID(Integer.parseInt(t2.getTag().toString()));
        row.SetTYPTECHUDRZBYID(Integer.parseInt(t3.getTag().toString()));
        row.SetOBJECTID(Integer.parseInt(t4.getTag().toString()));
        return row;
    }

    public static void setData(String REQUESTTYPEID ,String TYPTECHUDRZBYID,String OBJECTID,String REQUESTNOTE,String REQUESTID)
    {
        t1.setText(REQUESTNOTE);
        t2.setTag(REQUESTTYPEID);
        t2.setText(LocalDB.dbGetRequestTypeByID(c, Integer.parseInt(REQUESTTYPEID)));
        t3.setTag(TYPTECHUDRZBYID);
        t3.setText(LocalDB.dbGetTypTechUdrzbyByID(c, Integer.parseInt(TYPTECHUDRZBYID)));
        t4.setTag(OBJECTID);
        t4.setText(LocalDB.dbGetObjectByID(c, Integer.parseInt(OBJECTID)));
        Bitmap b = LocalDB.dbGetDocumentByID(c, Integer.parseInt(REQUESTID));
        if(b!=null)
        {
            iv1.setImageBitmap(b);
        }
    }

    public static Bitmap getSign()
    {
        iv1.buildDrawingCache();
        Bitmap ret = iv1.getDrawingCache();

        if(Enums.EmptySignHash)
        {
            return null;
        }
        else
        {
            return ret;
        }
    }

    public void Sign(View button)
    {
        Intent s = new Intent(Text.this,Sign.class);
        startActivityForResult(s,Enums.SIGNREQUESTID);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(resultCode!=Activity.RESULT_OK)
        {
            return;
        }
        Enums.IDLocal=-1;
        if(requestCode==Enums.GetData)
        {
            Bundle  extras = data.getExtras();
            if(extras !=null)
            {
                EditText et = (EditText)this.findViewById(extras.getInt("ViewID"));
                et.setText(extras.getString("Value"));
                et.setTag(extras.get("ID"));
            }
        }
        else if(requestCode==Enums.SIGNREQUESTID)
        {
            Bundle  extras = data.getExtras();
            if(extras !=null)
            {
                ImageView iv = (ImageView)this.findViewById(R.id.imageView1);
                try
                {
                    byte[] b = extras.getByteArray("Bitmap");
                    Enums.sign = Bitmap.createBitmap(BitmapFactory.decodeByteArray(b, 0, b.length), 0, 0, ac.getWindowManager().getDefaultDisplay().getWidth(), 200);
                iv.setImageBitmap(Bitmap.createScaledBitmap(Enums.sign, iv.getWidth(), iv.getHeight(), false));

                }
                catch(Exception e)
                {
                    int a=0;
                }
            }
            Enums.EmptySignHash=false;
        }
    }

    public static void DeleteAll()
    {
        EditText t = (EditText)ac.findViewById(R.id.TEXTNote);
        t.setText("");
        t.setTag(-1);
        t = (EditText)ac.findViewById(R.id.TextET2);
        t.setText("");
        t.setTag(-1);
        t = (EditText)ac.findViewById(R.id.TextET3);
        t.setText("");
        t.setTag(-1);
        t = (EditText)ac.findViewById(R.id.TextET4);
        t.setText("");
        t.setTag(-1);

        ImageView iv = (ImageView)ac.findViewById(R.id.imageView1);
        //Bitmap b = Bitmap.createBitmap(Enums.createColors(), 0, Enums.STRIDE, Enums.WIDTH, Enums.HEIGHT, Bitmap.Config.ARGB_8888).copy(Bitmap.Config.ARGB_8888, true);
        iv.setImageBitmap(Bitmap.createScaledBitmap(Enums.sign, ac.getWindowManager().getDefaultDisplay().getWidth(), iv.getLayoutParams().height, false));

        Enums.EmptySignHash=true;
    }

    public void Delete(View button)
    {
        EditText t = (EditText)this.findViewById(R.id.TEXTNote);
        t.setText("");
        t.setTag(-1);
        t = (EditText)this.findViewById(R.id.TextET2);
        t.setText("");
        t.setTag(-1);
        t = (EditText)this.findViewById(R.id.TextET3);
        t.setText("");
        t.setTag(-1);
        t = (EditText)this.findViewById(R.id.TextET4);
        t.setText("");
        t.setTag(-1);

        ImageView iv = (ImageView)this.findViewById(R.id.imageView1);
        //Bitmap b = Bitmap.createBitmap(Enums.createColors(), 0, Enums.STRIDE, Enums.WIDTH, Enums.HEIGHT, Bitmap.Config.ARGB_8888).copy(Bitmap.Config.ARGB_8888, true);
        iv.setImageBitmap(Bitmap.createScaledBitmap(Enums.sign, ac.getWindowManager().getDefaultDisplay().getWidth(), iv.getLayoutParams().height, false));

        Enums.EmptySignHash=true;

    }

    public void GetData(View button)
    {
        if(button.getId()==R.id.TextIB3)
        {
            Intent ChooseAction = new Intent(Text.this,ChooseData.class);
            Enums.Data = LocalDB.dbLocalSelect(this.getApplicationContext(),"Select typtechudrzbyid,typtechudrzbydesc from typtechudrzby");
            if(Enums.Data==null)
            {
                Toast t=Toast.makeText(this, "Chyba lokalni db", Toast.LENGTH_SHORT);
                t.setGravity(Gravity.CENTER, 0, 0);
                t.show();
                return;
            }
            ChooseAction.putExtra("ViewID", R.id.TextET3);
            startActivityForResult(ChooseAction,Enums.GetData);
        }
        else if(button.getId()==R.id.TextIB2)
        {
            Intent ChooseAction = new Intent(Text.this,ChooseData.class);
            Enums.Data = LocalDB.dbLocalSelect(this.getApplicationContext(),"Select Requesttypeid,requestname from requesttype");
            if(Enums.Data==null)
            {
                Toast t=Toast.makeText(this, "Chyba lokalni db", Toast.LENGTH_SHORT);
                t.setGravity(Gravity.CENTER, 0, 0);
                t.show();
                return;
            }
            ChooseAction.putExtra("ViewID", R.id.TextET2);
            startActivityForResult(ChooseAction,Enums.GetData);
        }
        else if(button.getId()==R.id.TextIB4)
        {
            Intent ChooseAction = new Intent(Text.this,TreeData.class);
            Enums.TreeData = LocalDB.dbLocalSelectTree(this.getApplicationContext(),"Select objectid,objectname,objectref from Objects");
            if(Enums.TreeData==null)
            {
                Toast t=Toast.makeText(this, "Chyba lokalni db", Toast.LENGTH_SHORT);
                t.setGravity(Gravity.CENTER, 0, 0);
                t.show();
                return;
            }
            ChooseAction.putExtra("ViewID", R.id.TextET4);
            startActivityForResult(ChooseAction,Enums.GetData);
        }
        else
        {
            //throw new Exception();
        }       

    }
}


推荐答案

我认为您在此链接中有解决方案。

i think you have a solution in this link.

https://stackoverflow.com/questions/456211/activity-restart-on-rotation-android

这篇关于Android:Orientation更改擦除对ImageView的修改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆