posted by 생존본능 2015.06.15 18:57


 안드로이드 사용시 자주 발생되는 out of memory 에 한가지 해결 방법



 SoftReference 



 메모리가 부족할경우, 담겨져 있는 데이터의 메모리를 비워 사용에 필요한 메모리를 확보한다.





HashMap<String, SoftReference<Bitmap>> bitmapMap = new HashMap<String,                                                         SoftReference<Bitmap>>();


bitmapMap.put(key, new SoftReference<Bitmap>(value));



저작자 표시
신고
posted by 생존본능 2015.06.12 15:53

android:adjustViewBounds="true"

<ImageView android:layout_width="match_parent" android:layout_height="wrap_content"  

            android:adjustViewBounds="true" />


저작자 표시
신고
posted by 생존본능 2015.05.04 14:49


 androidannotations 에서 많이 사용되는것 위주로 정리해 두겠습니다.





 1. @EActivity


 안드로이드에서 가장 많이 사용되는 어노텐션입니다.


 androidannotations 을 사용하는 activity를 명령하는 어노텐션 입니다.


@EActivity

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}


 위와 같이 명명 하시면 됩니다.


 또한 layout과 같이 사용하시려면 


 

@EActivity( R.layout.activity_main )

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}



 내용 처럼 @EActivity( R.layout.activity_main ) 으로 사용 하시면 됩니다.


 이렇게 적용하신 다음에


 mainifests에서 activity 명을 activity_ 으로 수정해주시면 됩니다.




 변경해 주시면 오류가 뜨는데 이때 Build > rebuild project 하시면 오류가 사라집니다.



 rebuild project를 하시면 보이지는 않지만 androidannotations에서 자동으로


 "activity_" 라는 클래스를 생성하기때문에 정상적으로 표시되는 것을 확인하실수있습니다.


 




 2. @AfterViews


@AfterViews는 view에 대한 모든 내용이 완료된 이후에 호출됩니다.



@EActivity( R.layout.activity_main )

public class MainActivity extends ActionBarActivity {



    @AfterViews

    protected void init()

    {

    }

}



 위 처럼 사용하시면 됩니다.


 주의 하실점은 androidannotations에서 MainActivity_라는 클래스를 생성하여


 MainActivity에 접근하기때문에 private를 사용할경우 오류가 발생합니다.


 public 또는 protected 만 사용이 가능합니다.





 3, @ViewById


 @ViewById는 안드로이드에서 사용했던 findViewById의 절차를 간소한 어노텐션입니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

    }



 처럼 사용했던 기존에 방식에서 @ViewById를 사용함으로써 간소화 하는 방식입니다.



 사용법은


     @ViewById

    protected TextView tvMain;


 처럼 사용하시면 됩니다. 위처럼 사용하시면 R.id.tvMain 이란 객체를 찾아 tvMain 변수에 넣어줍니다.



    @ViewById ( R.id.tvMain )

    protected TextView tvMain;



 또한 위처럼도 사용이 가능합니다.




 4. @Click

 

 기존에 사용하던 버튼을 사용하던 방식에서 크게 간소화 되었습니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

        tvMain.setOnClickListener( new View.OnClickListener(){

            @Override

            public void onClick(View v) {

                Log.i(TAG , "tvMainClick");

            }

        });

    }


 

 사용 방식은

 

@Click( R.id.tvMain )

    protected void tvMainClick()

    {

        Log.i(TAG , "tvMainClick");

    }


 입니다. 기존에 사용할때, 아이디 지정및 객체 생성등의 필요없는


 내용이 사라짐으로써 코드량이 확 주는 것을 확인 하실수 있습니다.



저작자 표시
신고
posted by 생존본능 2015.05.04 14:23



 안드로이드 스튜디오( Android Studio )에다가 androidannotations 적용하기가 여간 까다롭네요.


 이전에 올라왔던 글들을 보면 업데이트가 되서 그런지 않되는 경우가 많이 있구요,


 그래서 최신버전으로 다시 적용 방법을 보겠습니다.


 이글은 2015-05-04일에 작성되었습니다.


 

 우선 프로젝트를 생성한 이후 Gradle Scripts를 확인해 보시면 build에 관련하여


 두개의 gradle을 확인 하실 수있습니다.




 두개의 gradle중 Module: app 을 선택하여 진입합니다.



 


 프로젝트 생성시 기본적인 셋팅이 되어있는 것을 확인 하실수 있습니다.


 우리는 androidannotations를 셋팅하기위해서 gradle 의 내용을 바꾸어 줘야 합니다.


 


buildscript {

    repositories {

        mavenCentral()

    }

    dependencies {

        // replace with the current version of the Android plugin

        classpath 'com.android.tools.build:gradle:1.0+' // 버전에 맞게 변경.

        // the latest version of the android-apt plugin

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

    }

}


repositories {

    mavenCentral()

    mavenLocal()

}


apply plugin: 'android'

apply plugin: 'android-apt'

def AAVersion = '3.3' // 현재 최신버전 3.3으로 되어있으나 버전에 따라 변경.


dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:22.0.0'

    apt "org.androidannotations:androidannotations:$AAVersion"

    compile "org.androidannotations:androidannotations-api:$AAVersion"

    compile 'org.androidannotations:androidannotations:3.3'

}


apt {

    arguments {

        androidManifestFile variant.outputs[0].processResources.manifestFile

        resourcePackageName '[현재 프로젝트의 패키지]'

    }

}


android {

    compileSdkVersion 21

    buildToolsVersion '22.0.1'


    defaultConfig {

        applicationId "[현재 프로젝트의 패키지]"

        minSdkVersion 9

        targetSdkVersion 21

        versionCode 1

        versionName "1.0"

    }


    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android.txt'),

                    'proguard-rules.txt'

        }

    }


    packagingOptions {

        exclude 'META-INF/ASL2.0'

        exclude 'META-INF/LICENSE'

        exclude 'META-INF/license.txt'

        exclude 'META-INF/NOTICE'

        exclude 'META-INF/notice.txt'

    }


    sourceSets {

        main {

//            manifest.srcFile 'src/main/AndroidManifest.xml'

//            java.srcDirs = ['src/main/java']

//            resources.srcDirs = ['src/main/resources']

//            res.srcDirs = ['src/main/res']

//            assets.srcDirs = ['src/main/assets']

        }

    }




위에 내용으로 바꾸어 줍니다.


 버전에 맞게 내용을 변경 하시면 됩니다.


 그리고 [현재 프로젝트의 패키지]를 자신의 프로젝트에 맞게 변경하시면 됩니다.


 제가 사용하는 패키지는 "tc.wo.mbseo.applyandroidannotations" 이기 때문에 맞게 변경합니다.



apt {

    arguments {

        androidManifestFile variant.outputs[0].processResources.manifestFile

        resourcePackageName 'tc.wo.mbseo.applyandroidannotations'

    }

}



defaultConfig {

        applicationId "tc.wo.mbseo.applyandroidannotations"

        minSdkVersion 9

        targetSdkVersion 21

        versionCode 1

        versionName "1.0"

    }

 


 

 저장한 이후 rebuild project 합니다.

 




 이제 실행하시면 됩니다.






 위와 같이 나오면 정상적으로 적용된것입니다.




저작자 표시
신고
posted by 생존본능 2015.04.30 20:04



 


<a.php>

<?php

echo '감자';

?>



a.php라는 php 파일을 불러오기위해서는 include 라는 명령문을


 쓰신후 뒤에 경로를 입력하시면 됩니다.


include '[파일경로]'



<b.php>

<?php

include 'a.php';

echo '고구마';

?>



이후에 localhost/b.php 를 호출하시면 화면상에


 감자고구마


 라고 쓰여지는 페이지가 뜨는 것을 확인 하실수 있습니다.

저작자 표시
신고
posted by 생존본능 2015.04.29 18:54

http://sqlitebrowser.org/






사이트로 이동하여 os에 맞는 파일을 다운로드 이후 설치합니다.




 


open Database를 선택한 이후 [파일명].db 파일을 선택합니다.





 Browse Data 탭을 선택하시면 db를 확인하실수 있습니다.




 테이블을 선택하시면 만들어져있는 테이블을 확인하실수 있습니다.



저작자 표시
신고
posted by 생존본능 2015.04.29 18:46


 안드로이드 스튜디오에서 타겟에있는 DB 확인하는 방법.


 



아이콘 클릭.





DB 내용을 확인할 타겟을 지정합니다.








이후 File Explorer 를 선택하여 타겟 내부정보를 확인합니다.



경로 data/data/[어플리케이션 패키지]/databases/[지정한 db명].db 선택






db 파일을 선택하여 db 내용을 로컬로 가져와서 확인하시면 됩니다.


db 파일을 확인하는 방법이 궁금하시면,


sqlite database browse사용하기 



으로 가시면 됩니다.





저작자 표시
신고
posted by 생존본능 2015.04.27 16:30


build.gradle 파일 수정





buildscript {

    repositories {

        mavenCentral()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:1.0.0'

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

    }

}


repositories {

    mavenCentral()

    mavenLocal()

}


apply plugin: 'com.android.application'



dependencies {

    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile 'com.android.support:appcompat-v7:22.0.0'

    compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'

}


apt {

    arguments {

        androidManifestFile variant.outputs[0].processResources.manifestFile

        resourcePackageName 'tc.wo.mbseo.springtest'

    }

}


android {

    compileSdkVersion 21

    buildToolsVersion "22.0.1"


    defaultConfig {

        applicationId "tc.wo.mbseo.springtest"

        minSdkVersion 9

        targetSdkVersion 21

        versionCode 2

        versionName "1.1"

    }


    buildTypes {

        release {

            minifyEnabled  false

            proguardFiles getDefaultProguardFile('proguard-android.txt'),

                    'proguard-rules.txt'

        }

    }


    packagingOptions {

        exclude 'META-INF/ASL2.0'

        exclude 'META-INF/LICENSE'

        exclude 'META-INF/license.txt'

        exclude 'META-INF/NOTICE'

        exclude 'META-INF/notice.txt'

    }

Structure

    sourceSets {

        main {

        }

    }

}



 이후 Build -> Rebuild Project 

저작자 표시
신고
posted by 생존본능 2015.04.09 10:40




Idpi , mdpi , hdpi , xhdpi 의 해상도별 사이즈

  • ldpi: 200x320
  • mdpi: 320x480
  • hdp: 480x800
  • xhdpi: 720x1280
  • ldpi landscape
  • mdpi landscape
  • hdp landscape
  • xhdpi landscape


출처 : http://blog.iolo.kr/archive/201401



Idpi , mdpi , hdpi , xhdpi 의 해상도별 비율.




ldpi | mdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1    | 1.5  | 2     | 3      | 4


출처 : http://developer.android.com/guide/practices/screens_support.html

저작자 표시
신고
posted by 생존본능 2015.04.09 10:22


 

Resizer_1.3.1.exe



 

 안드로이드를 해상도별로 대응하다보면 하나의 이미지를 다른 해상도에 맞게 변환하여


 mdpi , Idpi , hdpi xhdpi xxhdpi 등의 사이즈로 변하여 넣어주게 되는데,


 이미지를 하나하나 작업하다보면 시간이 너무 오래 걸리기 마련이죠,


 그래서 괜찮은 툴이 있어 소개해드립니다.


 





9Patch Resizer 인데요, 사용법은 간단합니다.


이미지를 작업할때 기준이 된 사이즈를 Input density에 선택한후


내가 필요한 사이즈를 체크하시면 됩니다.






이후에 drag하여 하나의파일 또는 선택된 여러 파일을 Drop xhdpi image here에 가져다 놓으면 됩니다.


그러면, 모든 작업은 완료됩니다.






이제 이미지를 붙여 넣으시면 됩니다.



저작자 표시
신고

티스토리 툴바