J'ai un problème pour obtenir le "ScreenShot" correct d'une mise en page dans Android. La mise en page contient EditTexts et TextViews.Mise à jour du DrawingCache d'une mise en page spécifique dans Android
Le code suivant donne seulement un "ScreenShot" de la mise en page, mais quand j'ai changé la chaîne dans EditText ou TextView le "ScreenShot" ne pas mis à jour! Comment puis-je m'assurer que le "ScreenShot" peut être mis à jour et être identique à celui affiché à l'écran?
private Bitmap getBitmap() {
Bitmap bitmap = null;
LayoutInflater factorys = LayoutInflater.from(this);
final View textEntryView = factorys.inflate(R.layout.activity_main, null);
View ll = textEntryView.findViewById(R.id.ll_layout);
ll.setDrawingCacheEnabled(true);
ll.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
ll.layout(0, 0, ll.getMeasuredWidth(), ll.getMeasuredHeight());
ll.buildDrawingCache();
bitmap = Bitmap.createBitmap(ll.getDrawingCache());
//bitmap=getCacheBitmapFromView(ll);
ll.setDrawingCacheEnabled(false);
return bitmap;
}
est ici tout le code
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(mycl);
}
OnClickListener mycl = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Bitmap mybpic = null;
mybpic = getBitmap();
ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setImageBitmap(mybpic);
}
};
private Bitmap getBitmap() {
Bitmap bitmap = null;
LayoutInflater factorys = LayoutInflater.from(this);
final View textEntryView = factorys.inflate(R.layout.activity_main,
null);
View ll = textEntryView.findViewById(R.id.ll_layout);
ll.destroyDrawingCache();
ll.invalidate();
ll.setDrawingCacheEnabled(true);
ll.measure(View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED), View.MeasureSpec
.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
ll.layout(0, 0, ll.getMeasuredWidth(), ll.getMeasuredHeight());
ll.buildDrawingCache();
bitmap = Bitmap.createBitmap(ll.getDrawingCache());
// bitmap=getCacheBitmapFromView(ll);
ll.setDrawingCacheEnabled(false);
return bitmap;
}
}
essayez d'ajouter ll.destroyDrawingCache(); avant ll.setDrawingCacheEnabled (true); –
J'ai essayé les deux ll.destroyDrawingCache(); ll.invalidate(); cela ne fonctionne pas pour moi @DivyeshPatel – Lee
essayez d'invalider pour edittext et textview –