1단계 해당 파일 다운로드


2단계 (첨부파일 + unlock 만들기)
./fastboot oem unlock

ADB install 파일준비
Fastboot system-wide 파일 준비


3. Volume Down + Power button

fastboot 모드로 진입


4. Flashing the image

2단계 압축푼 해당 디렉토리에 가서

fastboot devices - 기기를 인식하는지 유무를 확인할 수 있다.

설치 방법은 아래와 같습니다.

Windows:
flash-all.bat

Mac:
./flash-all.sh

5. Re-locing the bootloader
./fastboot oem lock


Posted by 예배하는 프로그래머
  

펌) http://blog.naver.com/PostView.nhn?blogId=sungho0459&logNo=40147285896


외부 폰트를 적용 방법 3가지 

1.TextView 재정의.

2.attrs.xml 작성

3.main.xml 적용

 

1.TextView 재정의.

외부 폰트를 XML에서 사용하려면 기존 TextView를 새롭게 정의할 필요가 있습니다.

 

package com.example;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView;

public class TextViewPlus extends TextView {
   
private static final String TAG = "TextView";

   
public TextViewPlus(Context context) {
       
super(context);
   
}

   
public TextViewPlus(Context context, AttributeSet attrs) {
       
super(context, attrs);
        setCustomFont
(context, attrs);
   
}

   
public TextViewPlus(Context context, AttributeSet attrs, int defStyle) {
       
super(context, attrs, defStyle);
        setCustomFont
(context, attrs);
   
}

   
private void setCustomFont(Context ctx, AttributeSet attrs) {
       
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus);
       
String customFont = a.getString(R.styleable.TextViewPlus_customFont);
        setCustomFont
(ctx, customFont);
        a
.recycle();
   
}

   
public boolean setCustomFont(Context ctx, String asset) {
       
Typeface tf = null;
       
try {
        tf
= Typeface.createFromAsset(ctx.getAssets(), asset);  
       
} catch (Exception e) {
           
Log.e(TAG, "Could not get typeface: "+e.getMessage());
           
return false;
       
}

        setTypeface
(tf);  
       
return true;
   
}

}

여기서 중요한것은 패키지 명과 재정의를 한 Class 네임과 재정의 메소드의 내부입니다.

setCoustomFont내부 소스에서 처음보는 TextViewPlus_customFont는 나중에 attrs.xml 파일의 내용입니다.

Class네임은 당연히 TextViewPlus.java가 되겠죠?

패키지명은 main.xml에서 쓰이게 됩니다.

 

2.attrs.xml

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
   
<declare-styleable name="TextViewPlus">
       
<attr name="customFont" format="string"/>
   
</declare-styleable>
</resources>

TextViewPlus태그의 'customFont'속성 구조를 새로 정의하였습니다.

 

3.main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns
:android="http://schemas.android.com/apk/res/android"
    xmlns
:foo="http://schemas.android.com/apk/res/com.example"
    android
:orientation="vertical" android:layout_width="fill_parent"
    android
:layout_height="fill_parent">

   
<com.example.TextViewPlus
        android
:id="@+id/textViewPlus1"
        android
:layout_height="match_parent"
        android
:layout_width="match_parent"
        android
:text="@string/showingOffTheNewTypeface"
        foo
:customFont="saxmono.ttf">
   
</com.example.TextViewPlus>
</LinearLayout>

xmlns로 패키지 장소를 추가해서 우리가 만든 TextViewPlus의 customFont 속성을 추가할 수 있게 만들어줍니다.

기존 TextView가 아닌 우리가 정의한 TextViewPlus를 사용하기 위해서는 패키지 명까지 같이 적어주셔야 합니다. 'com.example.TextViewPlus'

그리고 attrs.xml에서 정의한 속성 customFont를 xmlns을 이용하여 연결해서 사용합니다.


Posted by 예배하는 프로그래머
  

현재 실 사용중인 네트워크 체크 소스입니다. 


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.intro);

       

Log.v("notice", "notice");

if (!KBONetworkInfo.IsWifiAvailable(this) && !KBONetworkInfo.Is3GAvailable(this))

{

    //Toast.makeText(this, "네크워크에 연결할 수 없습니다.", Toast.LENGTH_LONG).show();

msgShow("알림","본 서비스는 네트워크를 이용하는 서비스로 현재 네트워크에 연결되어 있지 않습니다.","닫기");

    return;

}

myHandler.postDelayed(myRunnable, 3000); // 딜레이 지정


}

public static class KBONetworkInfo {

 

    public static boolean IsWifiAvailable(Context context)

    {

        ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        boolean bConnect = false;

        try

        {

            if( m_NetConnectMgr == null ) return false;

 

            NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            bConnect = (info.isAvailable() && info.isConnected());

 

        }

        catch(Exception e)

        {

            return false;

        }

 

        return bConnect;

    }

 

    public static boolean Is3GAvailable(Context context)

    {  

        ConnectivityManager m_NetConnectMgr= (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

        boolean bConnect = false;

        try

        {

            if( m_NetConnectMgr == null ) return false;

            NetworkInfo info = m_NetConnectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

            bConnect = (info.isAvailable() && info.isConnected());

        }

        catch(Exception e)

        {

            return false;

        }

 

        return bConnect;

    }

}

public void msgShow(String title,String msg,String closeMsg){

AlertDialog alert = new  AlertDialog.Builder( this ).create();

alert.setTitle(title);

    alert.setMessage( msg );

   

    alert.setButton( closeMsg, new DialogInterface.OnClickListener()

    {

        @Override

        public void onClick(DialogInterface dialog, int which)

        {

            dialog.dismiss();

            finish();

        }

    });

   

   

    alert.show();

}


public boolean onKeyDown(int keyCode, KeyEvent e) {

Log.v(null, "" + keyCode);

if (keyCode == KeyEvent.KEYCODE_BACK) {

}

return false;

} 

public boolean onKeyDown1(int keyCode, KeyEvent e) {

Log.v(null, "" + keyCode);

if (keyCode == KeyEvent.KEYCODE_HOME) {

myHandler.removeCallbacks(myRunnable);

}

return false;

}

Posted by 예배하는 프로그래머
  

실제 업무에 사용중인 소스

키보드를 인텐트 시작과 동시에 무조건 보이기 위한 코드입니다. 

editText1 = (EditText)findViewById(R.id.editText1);

editText1.setSelection(0);      
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

LayoutParams 는 import android.view.WindowManager.LayoutParams;  -import 시켜줘야 한다. 

Posted by 예배하는 프로그래머
2013.05.10 17:52

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

  

http://www.wglxy.com/android-tutorials/drag-drop-for-android-gridview-v4

Drag-Drop for Android GridView (V4)


This demo application is a simple example that shows how to support dragging and dropping on a GridView. For more information about this, read the blog article at blahti.wordpress.com

Source code for this demo app is attached below. Be sure to do a clean build in Eclipse after you import the project. The project was built with Android 4.2 (API  level 17). It runs on API levels 11 and up.


DragDropGrid-130302.zip


Posted by 예배하는 프로그래머
  

진저브리드 부터 스레드를 이용한 이미지 출력이 아니면, 화면에 출력되지 않는다. 기계가 2.3 에서 잘되는데 4.0이상부터는 안되는 이유는 API변경!!! 
[안드로이드] ImageView API 진저브리드 변경 - StrictMode
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import android.os.Bundle;
import android.os.StrictMode;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

public class MainActivity extends Activity {

    ImageView mImgView1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);

        mImgView1 = (ImageView) findViewById(R.id.mImgView1);
        String url = "https://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Trial_Sizes_4e4ac3b0d3491_175x175.jpg";
        BitmapFactory.Options bmOptions;
        bmOptions = new BitmapFactory.Options();
        bmOptions.inSampleSize = 1;
        Bitmap bm = loadBitmap(url, bmOptions);
        mImgView1.setImageBitmap(bm);
    }

    public static Bitmap loadBitmap(String URL, BitmapFactory.Options options) {
        Bitmap bitmap = null;
        InputStream in = null;
        try {
            in = OpenHttpConnection(URL);
            bitmap = BitmapFactory.decodeStream(in, null, options);
            in.close();
        } catch (IOException e1) {
        }
        return bitmap;
    }

    private static InputStream OpenHttpConnection(String strURL)
            throws IOException {
        InputStream inputStream = null;
        URL url = new URL(strURL);
        URLConnection conn = url.openConnection();

        try {
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setRequestMethod("GET");
            httpConn.connect();

            if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
                inputStream = httpConn.getInputStream();
            }
        } catch (Exception ex) {
        }
        return inputStream;
    }
}

Posted by 예배하는 프로그래머
  

참고 디자인 소스 UX/UI

http://androiduiux.com/2012/06/27/new-to-android-designdevelopment-heres-a-list-of-great-resources-and-references-available/

http://www.android-app-patterns.com/

http://androidweekly.net/toolbox

http://www.fluidui.com/

Posted by 예배하는 프로그래머
  

http://www.androidviews.net/

http://java2s.com/Open-Source/Android/CatalogAndroid.htm


UI/UX design

http://appdevwiki.com/wiki/show/HomePage

http://droidstyle.aaplab.com/

Posted by 예배하는 프로그래머
  
FrameLayout 을 배열로 감싸아  처리하는 것을 보여주려 한다. 
실제 돌아가는 어플을 말하고 싶지만. 아래의 표로 표현하려 한다. 
 추가버튼
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout  FrameLayout
 FrameLayout (추가버튼)  FrameLayout

private ArrayList<FrameLayout> mApps;

SubPlusLayout plus = new SubPlusLayout(getWindow().getContext(),null,"plus");
mApps.add(plus);


추가버튼을 통해 각각 원하는 FrameLayout 을 위의 소스를 통해 추가할수 있다.  

핑크색 추가버튼 과 하늘색 추가버튼이 있다.
핑크색은 부모창에 있는 추가 버튼
하늘색은 자식창(부모창안에) 있는 추가버튼이다.

핑크색의 소스는 이렇다.
channerBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getWindow().getContext(), Channel.class);
startActivityForResult(intent, ACT_EDIT);
}
});

하늘색의 소스
public void onClick(View v) {
// TODO Auto-generated method stub
           
        Intent intent = new Intent(v.getContext(), Channel.class);
((Activity) v.getContext()).startActivityForResult(intent, ACT_EDIT);      
}
하늘색 추가 버튼이 추가버튼을 눌러 핑크색의 추가버튼과 같은 기능을 하려면 위의 소스처럼
Activity 의 형변환이 필요하다
사실 안드로이드에서 제공해주는 자동맞춤으로 해결하긴했지만, 정말 알아둬야 할 필요한 부분이다.

 
참고)
 startActivityforResult intent 은 아래의 그림처럼 한 화면에서 A 와 B을 보여줄수 있다
 


startActivityforResult   은 B 클래스에서 A 클래스로 넘어 올때 onActivityResult 가 필요하다.

 @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
   
    super.onActivityResult(requestCode, resultCode, data);
   
    switch(requestCode)
    {
    case ACT_EDIT:
    if(resultCode == Activity.RESULT_OK){    
    reloadGrid();
    }
    break;
   
    }
    }
Posted by 예배하는 프로그래머