2017-06-23 1 views
-2

Une superposition très standard tutorial dans ce lien a été suivie pour développer l'aperçu de la caméra avec superposition. Cependant, lorsque je change le <Button/> en <ImageView/> ou <ImageButton/> l'image ne s'affiche pas. Tout ce que je reçois est l'aperçu de la caméra lors de l'utilisation <ImageView/> et en utilisant <ImageButton/> les images ne sont pas affichées, mais de petites lignes blanches à des endroits où il devrait y avoir des images sont affichées. Les images sont présentes dans mipmap-xxhdpi. Ces boutons seront utilisés pour démarrer une autre activité ou prendre une photo sur clic par l'utilisateur.ImageView/ImageButton overlay sur l'aperçu de la caméra non affiché

J'ai examiné des questions sur StackOverFlow mais la réponse here ne fonctionne pas pour moi.

Autres détails pertinents

Le minSdkVersion a 16 ans et est compileSdkVersion 25. Quand je lance l'application dans l'émulateur sur API-21 ou au-dessus tout ce que je reçois est un écran noir.

Q1: Comment superposer <ImageView/> ou <ImageButton/> sur l'aperçu de la caméra?

Q2: Would obtenir écran noir ont quelque chose à voir avec l'API de l'appareil photo (ancien) désapprouvée et je dois construire des classes séparées pour tenir compte des différentes API?

Comme le code ci-dessous

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    //do something 
} else { 
    //do something else 
} 
+0

Veuillez ne pas vandaliser vos messages. Une fois que vous avez publié une question, vous avez concédé sous licence le contenu à la communauté Stack Overflow en général (sous la licence CC-by-SA). Si vous souhaitez dissocier ce message de votre compte, voir [Quel est le chemin approprié pour une demande de dissociation?] (Http://meta.stackoverflow.com/questions/323395/what-is-the-proper-route- for-a-dissociation-request). – Bugs

+0

Il est probablement préférable de regarder [ask] et de regarder [mcve] avant d'apporter des améliorations. Décapage _everything_ out n'est pas le chemin à parcourir. – Bugs

Répondre

0

Donc, mon problème n'a pas été résolu dans l'émulateur. Cependant, j'ai été en mesure d'obtenir des mains sur une gamme de dispositifs (5) fonctionnant API15,19,21,21,24. Voici le code qui a fonctionné pour moi. API15 a été utilisé seulement après avoir changé minSdkVersion à 15.

Construisez votre caméra personnalisée en utilisant les étapes données here. Quand vous allez éditer votre XML. Utilisez ce code

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1"/> 

<ImageView 
    android:id="@+id/button_capture" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:src="@drawable/your_file_name"/> 
</FrameLayout> 

Quant à obtenir un écran noir, l'application devait être autorisé dans les réglages de l'appareil (Settings->App->Select your app->Permisions->Camera) dans API21 et au-dessus.

Modifier: A obtenu le même code de travail dans l'émulateur et par invalidating cache and restarting suivi en utilisant clean project.

0

Selon votre première question, je pense que la question est que l'élévation de la vue de la surface utilisée par vous est plus que celle d'un imageView et égal au ImageButton donc rien montre dans le cas de ImageView et les lignes montrent dans le cas de ImageButton (indice: penser 3d) here est un guide pour l'élévation de la conception matérielle android et les ombres. Essayez d'augmenter l'élévation de votre ImageView ou ImageButton.

Maintenant pour votre deuxième question, il ne devrait pas être à cause de l'ancienne API essayez this réponse.

+0

J'ai essayé vos suggestions en utilisant 'bringToFront()' et 'ViewCompat.setTranslationZ (view, translationZ)'. Mais la disposition de superposition n'apparaissait pas dans l'appareil photo. Je suis encore en train de lire diverses sources sur l'obtention d'un écran noir sur l'ouverture de la caméra. La caméra dans l'application fonctionne bien lors de l'ouverture sur API 16 à API 19 – chinmish