Android 안드로이드2015. 9. 23. 00:11

[이동: 안드로이드 프로젝트에 빨간 사각형 바탕에 희색 x 표시가 뜬다.]


구글에서는 올해 중으로 될 수 있으면 빠르게 안드로이드 스튜디오로 올라타라고 권고한다. 그도 그럴 것이 Android Studio는 소수점 대를 넘어 1.+ 에 있다. 그리고 이젠 몇 차례 업데이트를 해서 이클립스에서 가능했던 NDK도 안드로이드스튜디오에서 지원한다.


안드로이드 스튜디오로 못 갈 이유를 찾기 어려운 상황이 되었으나 아직도 이클립스를 사용하는 사용자들이 있을 것으로 본다. 그중에 나도 있다.


며칠 전 안드로이드 스튜디오에서 SDK를 업데이트하려고 아이콘을 클릭했다. 못 보던 SDK 업데이트 대화상자가 뜨고 기존 legacy 대화상자를 다시 띄워 Android SDK를 업데이트했다. 


뭔지 모르지만 업데이트한 이후에 느껴지는 그 뿌듯함이 느껴졌다. 


그것도 잠깐이었다. 며칠 후 Eclipse를 켜니 적색 딱지가 모든 프로젝트 아이콘에 붙어있었다. 심상치 않은 분위기였고 3일여 흘러서 어찌어찌 해결했다. 아래 해결 방법을 숫자를 붙여서 했으나 3번부터는 때론 순서를 바꿔가며 시도해도 된다. 수차례 클릭을 반복하다 보면 그 무서운 red 주홍글씨를 제거할 수 있다.


아래 링크와 같이 실천하여 이클립스를 2015년에 꽉 채워 보름달을 만들어 보기 바란다.



[이동: 안드로이드 프로젝트에 빨간 사각형 바탕에 희색 x 표시가 뜬다.]




Posted by 코드버무려
Android 안드로이드2015. 9. 22. 23:39

[이동: 안드로이드 API 23 레벨로 SDK 업데이트 후]


안드로이드 SDK를 업데이트 후에 이클립스 각 프로젝트 아이콘에서 왼쪽 아래에 빨간 사각형 바탕에 희색 x 표시가 뜬다. 또는 느낌표가 나타난다.



해결방법은 이렇다::


1. 새로 업데이트된 google-play-services를 복사해서 원하는 폴더에 둔다.

2. 새로 업데이트된 android-support-v7-appcompat를 복사해서 원하는 폴더에 둔다.

3. android-support-v7-appcompat를 우클릭하고 

4. Properties > Android > Project Build Target에서 가장 최신 Android 6.0을 선택한다.



6. 오류가 나는 프로젝트 우클릭하고 Properties > Android > 

7. Library에서 기존 google-play-services와 android-support-v7-appcompat를 삭제.

8. Project Build Target에서 가장 최신 Android 6.0을 선택한다.

9. 확인하고 대화상자를 빠져나와서 상단 메뉴> Project> Clean...> 해당 프로젝트 선택 청소.




Posted by 코드버무려
Android 안드로이드2015. 2. 27. 12:56












<resources>

	<style name=" noBorderDialog ">

		<!-- background는 대화상자 주변,  windowBackground 대화상자 내부에 각각 적용--> 
		<item name="android:background">@color/white_opaque</item>
		<item name="android:windowBackground">@color/white_opaque</item>
		<item name="android:colorBackground">@color/white_opaque</item>
		<item name="android:windowFrame">@null</item> 
		<item name="android:windowIsFloating">true</item> 
		<item name="android:windowContentOverlay">@null</item> 
		<item name="android:windowTitleStyle">@null</item>
		<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
		<item name="android:backgroundDimEnabled">false</item>
		<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
	</style>
</resources>


dialog_pencil.requestWindowFeature(Window.FEATURE_NO_TITLE);

는 android:windowFrame 와 같은 설정으로 대화상자 테두리를 제거한다


Dialog dialog = new Dialog(this,R.style.noBorderDialog)

를 자바코드 원하는 곳에 놓으면 대화상자를 소환할 수 있다.






Posted by 코드버무려
Android 안드로이드2015. 2. 22. 22:57










Change Menu dynamically[All Fum]

메뉴 내용을 변경하는 코드[올 펌]

public class YourActivity extends Activity {

    private Menu menu;
    private String inBedMenuTitle = "Set to 'In bed'";
    private String outOfBedMenuTitle = "Set to 'Out of bed'";
    private boolean inBed = false;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        // Create your menu...

        this.menu = menu;
        return true;
    }

    private void updateMenuTitles() {
        MenuItem bedMenuItem = menu.findItem(R.id.bedSwitch);
        if (inBed) {
            bedMenuItem.setTitle(outOfBedMenuTitle);
        } else {
            bedMenuItem.setTitle(inBedMenuTitle);
        }
    }

}



아래 코드는 실시간과는 거리가 있다. 참고 정도로!

"Set to 'Out of Bed'"
public void setOptionsTitle(String status)
{
    bedStatus = status;

}
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        menu.add(bedStatus);


        // Return true so that the menu gets displayed.
        return true;
    }





실행 중 변경하는 또다른 법

menu.Clear ();
   if (TabActual == TabSelec.Anuncio)
   {
       menu.Add(10, 11, 0, "Crear anuncio");
       menu.Add(10, 12, 1, "Modificar anuncio");
       menu.Add(10, 13, 2, "Eliminar anuncio");
       menu.Add(10, 14, 3, "Actualizar");
   }
   if (TabActual == TabSelec.Fotos)
   {
       menu.Add(20, 21, 0, "Subir foto");
       menu.Add(20, 22, 1, "Actualizar");
   }
   if (TabActual == TabSelec.Comentarios)
   {
       menu.Add(30, 31, 0, "Actualizar");
   }


http://stackoverflow.com/questions/7066657/android-how-to-dynamically-change-menu-item-text-outside-of-onoptionsitemssele



다이나믹하게 실행 후에 메뉴 내용 변경

@Override public boolean onPrepareOptionsMenu(Menu menu) {     menu.clear();     if(isChangedStat) {         menu.add(0, MENUITEM, 0, "True");     } else {         menu.add(0, MENUITEM, 0, "False");     }     return super.onPrepareOptionsMenu(menu); }

https://thedevelopersinfo.wordpress.com/2009/10/20/dynamically-change-options-menu-items-in-android/

Posted by 코드버무려
Android 안드로이드2015. 2. 20. 21:53












카메라와 플레시를 다루는 기본 구조를 만들었다.

같은 자리에서 근 1주일여 이상 머무르는 중이다.

바닥으로 내려가서 점검하며 올라가려는 생각에 만들었다.

이것으로 실마리를 찾아가는 단초가 되었으면한다.



package com.example.tstbselight; import java.io.IOException; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MnTstBaeLightActy extends Activity implements SurfaceHolder.Callback { private static final String TAG = MnTstBaeLightActy.class.getSimpleName(); Camera mCamera = null; Parameters mParameters = null; // add null!!! SurfaceView mSurfaceView; SurfaceHolder mSurfaceHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.acty_mntstbaelight); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "*******************************************************"); Log.d(TAG, "onCreate()"); mSurfaceView = (SurfaceView)findViewById(R.id.surfaceView); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mSurfaceHolder.addCallback(this); } @Override public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated()"); mCamera = Camera.open(); mParameters = mCamera.getParameters(); try { mCamera.setPreviewDisplay(mSurfaceHolder); } catch (IOException e) { e.printStackTrace(); } Log.d(TAG, "__ B4:setFlashMode():"); mParameters.setFlashMode(Parameters.FLASH_MODE_TORCH); Log.d(TAG, "__ B4:setParameters():"); mCamera.setParameters(mParameters); Log.d(TAG, "__ B4:startPreview():"); mCamera.startPreview(); Log.d(TAG, "__ A4:startPreview():"); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Log.d(TAG, "surfaceChanged()"); } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.d(TAG, "surfaceDestroyed()"); if (mCamera != null) { Log.d(TAG, "setFlashMode(Parameters.FLASH_MODE_OFF)"); mParameters.setFlashMode(Parameters.FLASH_MODE_OFF); Log.d(TAG, "setParameters(mParameters)"); mCamera.setParameters(mParameters); // mSurfaceHolder.removeCallback(this); Log.d(TAG, "stopPreview()"); mCamera.stopPreview(); Log.d(TAG, "release()"); mCamera.release(); Log.d(TAG, "A4:release()"); mCamera = null; } } @Override public void onDestroy() { Log.d(TAG, "onDestroy()"); super.onDestroy(); } }





Posted by 코드버무려