Android 안드로이드2014. 8. 12. 18:13

안드로이드 개발자 콘솔에 APK 파일을 업로드 실패


Adam.Eve.appname 이라고 패키지를 정했던 것이 오류를 유발했다.

패키지 이름은 모두 소문자로 이루어져야 한다.




Posted by 코드버무려
Android 안드로이드2014. 8. 8. 23:10


토글 버튼은 한 번 누르면 상태가 바뀌고 다시 누르면 그 바뀐 상태에서 원래 상태로 되롤아 갑니다.


이것이 익히 생각하는 토글 버튼이고 ToggleButton 클래스로 구현이 쉽게 됩니다. 텍스트 토글 버튼이면 간답합니다. 그러나 텍스트를 이미지로 대체하면 결과는 그렇지 않다는 것을 볼 수 있습니다. 그냥 이미지가 눌러질 때 잠깐 바뀌고 다시 되돌아가는 가짜 토글일 뿐이죠. 


안드로이드 기본 예제나 보통 접할 수 있는 방법으로는 이미지를 클릭하면 원하는 토글 효과를 접할 수 없습니다. 보통 클릭하는 순간 이미지가 바뀌고 손가락이 떨어지는 순간 초기 이미지로 돌아와 버립니다. 이래서는 토글이라고 할 수가 없죠. 이것은 토글 버튼이라기 보다는 딸깍 버튼이라고 부르는 것이 보다 근접한 표현이라 하겠습니다.


여기서는 위에 기술한 형태로 반응하는 버튼이 아니고 익히 생각하는 그 버튼입니다. 이미지 버튼을 클릭이나 터치하면 다른 버튼으로 바뀝니다. 손가락을 떼어도 그 변경된 상태를 그대로 유지합니다. 다시 터치를 하면 이미지는 초기 이미지로 되돌아갑니다. 이것이 진정한 토글 이미지 버튼으로서 여기 블로그를 찾은 이들에게 정확한 답변이 되겠습니다.


아래는 java 소스 변경 없이 xml만을 변경하고 추가합니다.


*************acti_main_tst_toggle.xml 파일 @layout 폴더***************************

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"


    

    <ToggleButton

        android:background="@drawable/bttn_toggle_bg" 

        style="@style/OurThemeName" 

        android:checked="true"

        android:id="@+id/tbt_tst"

   android:layout_width="match_parent"

   android:layout_height="match_parent">

    </ToggleButton>

</RelativeLayout>



*************themes.xml 파일 @values 폴더***************************

<?xml version="1.0" encoding="utf-8"?>

<resources>

<!-- Overwrite the ToggleButton style -->

<style name="Widget.Button.Toggle" parent="android:Widget">

   <item name="android:background">@drawable/bttn_toggle_bg</item>

   <item name="android:textOn">Add</item>

   <item name="android:textOff">Del</item>

   <item name="android:disabledAlpha">?android:attr/disabledAlpha</item>

</style>

 

<style name="OurThemeName"  parent="@android:Theme.Black">

   <item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item>

<item name="android:textOn"></item>

   <item name="android:textOff"></item>

</style>  

</resources>





                



*************bttn_toggle.xml 파일 @drawable폴더***************************

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:state_checked="true" android:drawable="@drawable/button_wine" />

<item android:state_checked="false" android:drawable="@drawable/button_wine_off" />

</selector>




*************bttn_toggle_bg.xml 파일 @drawable폴더***************************

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+android:id/background" android:drawable="@android:color/transparent" />

    <item android:id="@+android:id/toggle" android:drawable="@drawable/bttn_toggle" />

</layer-list>

Posted by 코드버무려
Android 안드로이드2014. 8. 3. 10:31

개발자는 안드로이드 소스를 수정하면서 앱 버전 version을 올린다. 


판올림이라고도 한다. 안드로이드 어플 버전과 그 소스 버젼, 즉 앱 버전을 어떻게 표현하는 가를 알아보자. 사용가능 변수가 두 가지 있다. versionCode와 versionName이 그것이다.


AndroidManifest.xml파일 manifest 엘리먼트에서 아래 두 줄을 발견할 수 있다.

android:versionCode="4"

android:versionName="1.04"


versionCode는 개발자가 볼 수 있다.

시스템에서 버젼의 업데이트가 되었나를 확인하는 용도로 정수형입니다.

최초 시작할 때는 1이고, 업데이트할 때마다 1씩 증가시켜주면 됩니다.

이전과 지금의 상대적인 버전 값을 보여 줍니다. 


versionName는 객발자와 사용자가 볼 수 있는 문자열이다. 

안드로이드 내부 시스템에서 특수한 목적으로 사용하지 않으므로 어떠한 형태로도 표시가능하다.

홈화면 > 설정 > 앱(설정) > 해당 App상세화면 을 따라가면 화면 상단 좌측 홈 위치에서 어플App 이름 바로 아래 있는 숫자를 볼 수 있다. 주로 소숫저으로 보여지나 숫자가 아닌 문자로 취급한다.

Posted by 코드버무려
Android 안드로이드2014. 8. 2. 22:34

안드로이드에서 버튼을 만드는 방법


  • RalativeLayout, TextView,  ImageView, LinearLayout에 android:clickable="true"를 추가하면 버튼이 된다. Button 만으로 Button 을 만들 필요는 없다.

  • 버튼이미지 하나만으로 누름효과 적용하기
    • http://shiki.me/blog/android-button-background-image-pressedhighlighted-and-disabled-states-without-using-multiple-images/

  • 버튼이미지 두 개로 누름효과 적용하기
    1. res\drawable (없으면 만드다) 에 눌림효과를 줄 button_effect.xml파일을 넣는다.
    2. button_effect.xml에 소스를 추가
      1. 눌림과 안눌림 2개효과 적용할 때
        •  <?xml version="1.0" encoding="utf-8"?>
        • <selector xmlns:android="http://schemas.android.com/apk/res/android">

          •  <item android:state_pressed="true" android:drawable="@drawable/pressed_button" />

          •  <item android:drawable="@drawable/normal_button" /> 

        • </selector>

        • 효과를 줄 버튼 이미지가 있는 drawable-hdpi폴더 (또는 drawable-xhdpi,  ... )에 버튼 이미지 파일 normal_button, 

        • pressed_button을 추가해준다.

      2. 눌림과 안눌림. 포커스 3개효과 적용할 대
        • <?xml version="1.0" encoding="utf-8"?>

        • <selector xmlns:android="http://schemas.android.com/apk/res/android">

          •  <item android:state_pressed="true" android:drawable="@drawable/pressed_button" />

          •  <item android:state_focused="true" android:drawable="@drawable/focused_button" />

          •  <item android:drawable="@drawable/normal_button" /> 

        • </selector>

        • 효과를 줄 버튼 이미지가 있는 drawable-hdpi폴더 (또는 drawable-xhdpi,  ... )에 버튼 이미지 normal_button, pressed_button, focused_button을 추가해준다.

      3. 눌림효과가 적용될 activity_buttontest.xml로 가서

      4.     <Button

                android:id="@+id/button1"

                android:layout_width="302dp"

                android:layout_height="105dp"

                android:layout_centerHorizontal="true"

                android:layout_marginTop="144dp"

                android:background="@drawable/normal_button" />

      5. 위과 같은 부분을 찾는다.

      6. android:background의 값 "@drawable/normal_button"을 "@drawable/button_effect"으로 바꾼다

  • 주의할 점은 기존 android:background="@drawable/ ~ "에서 "~" 부분에 이미지 파일이 있었으나 버튼 효과를 줄 때는 xml파일로 바꾸주는 것이다.


Posted by 코드버무려
Android 안드로이드2014. 8. 2. 22:27


LinearLayout 으로 설정했을 경우 Button, TextView에서 android:layout_weight 를 사용할 수 있다. 

layout_weight 속성은 레이아웃을 배치한 후 남는 여백을 비율에 따라 나눈다. 이때 버튼과 텍스트뷰는 layout_height에서 wrap_content 또는 0dp 만을 사용할 수 있다. 다른 것을 사용할 경우 결과를 알기 어렵다.

android:layout_height="wrap_content"

android:layout_height="0dp"


layout_weight="0" 과 layout_weight="1"으로 대부분 레이아웃을 만들 수 있다.


linear_weight값이 '0'이면, 지정한 값을 반드시 차지한다. 즉 자신의 고유한 크기만큼은 꼭 가져간다.'1'이상이면 형제 뷰와의 비율에 따라 부모의 영역을 균등하게 배분한다. 가령 linear_weight 값을 3:1:3로 지정하면, 화면의 비율을 3;1:3 만큼 차지하게 된다.

 parent에 weight_sum을 1이고, child에 layout_weight 을 0 .8로 주면.. 80%를 차지한다.

Posted by 코드버무려