De prendre une “capture d'écran” d'une disposition spécifique dans Android
J'ai deux questions principales qui sont étroitement liés. Je suis à la recherche à ces problèmes à partir d'une programmatiques point de vue.
(1) - je souhaite prendre une capture d'écran du contenu d'une page SPÉCIFIQUE, c'est à dire un ScrollView
imbriquée dans une LinearLayout
.
(2) - Que la ScrollView
possède un contenu qui sortent de l'écran (d'où le défilement possible), comment puis-je m'assurer que la capture d'écran comprend les éléments qui ne sont pas visibles sur l'écran?
Il s'agit du bloc de code que j'utilise. Il fait le travail de prendre une capture d'écran, mais seulement pour la totalité de l'écran. C'est bien que R.id.boss
est l'ID de la ScrollView
et pas la principale LinearLayout
.
View view = findViewById(R.id.boss);
View v = view.getRootView();//this does not seem to make a difference
v.setDrawingCacheEnabled(true);
v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
v.buildDrawingCache(true);
Bitmap b = Bitmap.createBitmap(u.getDrawingCache());
v.setDrawingCacheEnabled(false);
Merci d'avance.
EDIT:
J'ai fait quelques erreurs. J'ai utilisé R.id.boss
qui est le mal de ressources. Je suis maintenant en mesure de prendre une capture d'écran de la scrollview seul, moins l'écran des pièces.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/boss"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="F"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Analyze via image URL"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:id="@+id/mUrl"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:text="http://" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/call"
android:layout_width="75dp"
android:layout_height="50dp"
android:layout_weight="0.3"
android:text="ABC"
android:src="@drawable/run" />
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ABC"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<EditText
android:id="@+id/filepath"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.55" />
<ImageView
android:id="@+id/cam"
android:layout_width="75dp"
android:layout_height="50dp"
android:layout_weight="0.15"
android:src="@drawable/cam" />
<ImageView
android:id="@+id/browse"
android:layout_width="75dp"
android:layout_height="50dp"
android:layout_weight="0.15"
android:src="@drawable/folder"
android:text="B" />
<ImageView
android:id="@+id/upload"
android:layout_width="75dp"
android:layout_height="50dp"
android:layout_weight="0.15"
android:src="@drawable/run"
android:text="A" />
</LinearLayout>
<LinearLayout
android:id="@+id/baba"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_weight="0.7" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="186dp"
android:orientation="vertical" >
<ImageView
android:id="@+id/pic"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Facial recognition"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/avmarwe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Gender and age"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/skahasd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Expression and mood"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/dsfsfs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Celebrity Facial Match"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</ScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" >
<Button
android:id="@+id/c"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_weight="0.7"
android:text="" />
<Button
android:id="@+id/share"
android:layout_width="70dp"
android:layout_height="50dp"
android:layout_weight="0.3"
android:text="" />
</LinearLayout>
</LinearLayout>
voir mon question sous EDIT: résultat final.. c'est de prendre la capture d'écran de l'écran de la page.. Mais la même logique fonctionne n'importe où..
salut silwar, merci, j'ai regardé. le lien sur les 2 activités semble être la plus proche de ce dont j'ai besoin, mais je ne souhaite pas créer une seconde activité.
J'ai aussi trouvé quelques erreurs dans votre code, sur u, v..
En fait, j'ai essayé le code et prendre une capture d'écran de tous les points de vue des parents qu'ils soient visibles sur l'écran ou pas.. Vous n'avez pas besoin de les faire défiler.
OriginalL'auteur Reuben L. | 2012-05-18
Vous devez vous connecter pour publier un commentaire.
Merci à vous les gars, j'ai enfin trouvé ce qui n'allait pas.
View v = view.getRootView();
ne doit pas être utilisé parce qu'il appellera la racine de vue que je ne veux pas. J'ai tort, ce n'est pas de faire une différence, parce que j'avais entré le mauvais code de ressource.MeasureSpec
en quelque sorte de ne pas donner un bon compte de la largeur et de la hauteur. J'ai donc fini par utiliser une autre méthode:Comme le ScrollView la hauteur totale peut être déterminée par le seul élément enfant dont il dispose.
Après avoir fait ces changements, je suis maintenant en mesure de prendre une capture d'écran d'un imbriquée ScrollView et l'ensemble de son contenu, visible ou non. Pour qui s'intéresse, ici, c'est le bloc de code, y compris l'enregistrement de l'image:
Oui, le code a bien fonctionné et l'application a été publié il y a 2 ans. Avez-vous d'ajuster les variables en conséquence?
ooppss ne pas voir le code ` Vue u = findViewById(R. id.faites défiler jusqu'); " merci beaucoup....
il est possible d'obtenir une capture d'écran de la gridview, j'ai essayé de vous code il prendre toute la gridview en hauteur et en largeur, mais pas le contenu(iamge) l'affichage des boîtes noires
Qui fonctionne, cependant j'avais besoin de réinitialiser la largeur et la hauteur de la ScrollView après la prise de la capture d'écran. L'u.mise en page(0, 0, totalWidth, totalHeight); modifications du code de l'dimensions.
OriginalL'auteur Reuben L.
essayez cela, il fonctionne très bien pour moi
votre accueil...heureux de vous aider
OriginalL'auteur Mahtab
EDIT : après avoir vu OP commentaire
Vous n'avez pas besoin de penser à de nouvelles activités à tous.. Dire que vous êtes dans l'Activité en ce moment.. Mise en page est la page principale de l'activité, la Mise en page B et C sont deux enfants mises en page à l'intérieur de la Disposition A. Comme cela,
Maintenant, si vous voulez prendre une capture d'écran de C seulement
1) dans onCreate() de l'activité
où getDrawingBitmap() est une fonction..prendre une capture d'écran..
EDIT: Pour le ScrollView
Je n'ai jamais essayé.. Mais je pense que vous pouvez le faire..
1) tout d'abord annuler le scrollView, et remplacer onMeasure fonction..
et l'utilisation MyScrollView dans votre mise en page.. ici yourFullScrollViewHeight est à la hauteur de toutes les scrollView contenu dont vous avez besoin pour prendre une capture d'écran.. je n'ai jamais essayé.. Mais il pourrait fonctionner..
Le ScrollView uniquement la partie visible, je pense comme listview, je pense..
Veuillez voir mon edit.. je ne peux pas garantir que cela fonctionnera ou pas.. Mais j'étais vous, je vais essayer..
Désolé, vous avez posté votre xml après j'ai mis la réponse.. Vous pourriez avoir besoin pour remplacer le LinearLayout à l'intérieur de scrollView au lieu de cela, exactement de la même façon comme je l'ai remplacer le scrollView dans ma réponse.. Remplacer onMeasure et de retour à la totalité du contenu de la hauteur.. Puis quand vous prenez une capture d'écran , capture d'écran de la disposition linéaire (celui qui est dans le scrollView) au lieu de le scrollView.. je pense que ce sera le travail..
Bien que j'ai fini par résoudre ce une autre manière, je pense que vous avez peut-être droit. Merci pour l'aide!
OriginalL'auteur Krishnabhadra
Voici la solution exacte que vous voulez, Il va afficher la totalité de l'écran, y compris le contenu caché dans votre
ScrollView
Affichage
bitmap
dans votreImageView
ou l'utiliser comme vous voulez.Profiter..
OriginalL'auteur Nirav Dangi
J'ai aussi eu ce problème et codé par moi-même.
J'ai utilisé ce code pour prendre une capture d'écran de toute la mise en page.
Je n'ai modifié la taille de la liste et certains éléments de mathématiques.
Voir la suite site web,
OriginalL'auteur muruganvel
Essayer ce code
public Bitmap capture d'écran(Affichage)
{
OriginalL'auteur Thilina Anuradh