구글 드라이브에서 파일이나 문서를 공유할때 모든 사람들이 아닌 내가 아는 사람들만 공유 해야 할때가 있습니다.

1. 구글에 로그인 합니다.

2. 구글 드라이브로 들어 갑니다.

3. 구글 드라이브에 공유 할 파일이나 문서를 업로드 합니다.

4. 공유 할 파일에 마우스 오른쪽버튼을 눌러 공유를 누릅니다.


5. 현재 링크를 공유 하면 모든 사용자가 볼 수 있기 때문에 특정 사용자만 공유하기 위해서는 밑에 고급을 누릅니다.



6. "링크가 있는 모든 사용자가 볼 수 있습니다" 옆에 변경을 누릅니다.


7. 링크 공유에서 사용 안함으로 설정하고 저장 누릅니다.

8. 이곳에서 파일을 공유하고 싶은 사람들만 이메일을 입력하여서 공유합니다.


이로써 내가 아는 사람들만 파일을 공유할 수 있고 나머지 모르는 사람은 파일을 다운 받을 수 없습니다.





728x90
반응형

'기타' 카테고리의 다른 글

태국 코사무이 신혼여행 후기(feat.하나투어)  (1) 2024.06.15
한성 노트북 P56 MGA770개봉기  (0) 2016.01.17

코딩을 하다보면 일반 레이아웃 객체는 쉽게 선언 할 수 있는데 안드로이드 툴바 메뉴객체는 어떻게 선언해야하지? 하면서 모

를 때가 있습니다. 이럴때는 이렇게 하시면 됩니다.


add_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item
android:id="@+id/add_all_check"
android:title="@string/choice_all"
android:checkable="true"
android:checked="false"
android:orderInCategory="101"
app:showAsAction="ifRoom"
/>

<item
android:id="@+id/add_check_num"
android:title=""
android:orderInCategory="102"
app:showAsAction="ifRoom"
/>
</menu>

-----------------------------------------------------------------------------------------------------------------

/**전체선택 메뉴*/
private MenuItem mAddAllCheckMenu;

/**선택 개수 메뉴*/
private MenuItem mAddCheckNumMenu;


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.add_menu, menu);
mAddAllCheckMenu = menu.findItem(R.id.add_all_check);
mAddCheckNumMenu = menu.findItem(R.id.add_check_num);
mAddCheckNumMenu.setTitle(String.format(getString(R.string.choice_check_num), 0));
return true;
}


    @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
Intent intent = null;
if (id == R.id.add_all_check) {
if (!mAddAllCheckMenu.isChecked()) {
mAddAllCheckMenu.setChecked(true);
mAddAllCheckMenu.setTitle(getString(R.string.choice_all));
setAllChecked(true);
mAddCheckNumMenu.setTitle(String.format(getString(R.string.choice_check_num), getCheckedCount()));
} else {
mAddAllCheckMenu.setChecked(false);
mAddAllCheckMenu.setTitle(getString(R.string.choice_all));
setAllChecked(false);
mAddCheckNumMenu.setTitle(String.format(getString(R.string.choice_check_num), 0));
}
} else if (id == R.id.add_check_num) {
return false;

}


return super.onOptionsItemSelected(item);
}
}


728x90
반응형

 

  mButtonLayout = (LinearLayout) findViewById(R.id.action_btn_layout);

    private void transAnimation(boolean bool){

        AnimationSet aniInSet = new AnimationSet(true);
        AnimationSet aniOutSet = new AnimationSet(true);
        aniInSet.setInterpolator(new AccelerateInterpolator());
        Animation transInAni = new TranslateAnimation(0,0,100.0f,0);
        Animation transOutAni = new TranslateAnimation(0,0,0,100.0f);
        transInAni.setDuration(200);
        transOutAni.setDuration(200);
        aniInSet.addAnimation(transInAni);
        aniOutSet.addAnimation(transOutAni);

        if (bool) {
            mButtonLayout.setAnimation(aniInSet);
            mButtonLayout.setVisibility(View.VISIBLE);
        } else {
            mButtonLayout.setAnimation(aniOutSet);
            mButtonLayout.setVisibility(View.GONE);
        }

    }
728x90
반응형

 

 

머티리얼 디자인 적용 방법이랄것도 없지만 매우 간단합니다.

우선

1. Compile Sdk Vrersion을 롤리팝 이상으로 맞춰줍니다.

2. Build Tools Version을 20이상으로 맞춰 줍니다.

3. com.android.suppot:appcompat-v7을 최신버전으로 해놓습니다.

 

 

4. 그리고 Style.xml에 다음과 같이 적어줍니다.

 <resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
    </style>

</resources>

 

이 간단한 과정으로 머티리얼 디자인이 적용이 되었습니다.

정말 이게 끝입니다.

하지만 테스트 하실때 디바이스의 소프트웨어 버전이 롤리팝 이상 버전이어야지 머티리얼디자인이
적용되신걸 볼 수 있습니다.

롤리팝 이전버전에서 머티리얼 디자인을 적용하기위해서는 라이브러리가 필요합니다.

그부분에 관해서는 다음 포스팅이나 기회가 될때 포스팅 하도록 하겠습니다.

감사합니다.

 

728x90
반응형

 

public static boolean isNull(String value){
		if (value == null || value.trim().length() < 1 || value.equals("null")) {
			return true;
		}
		else {
			return false;
		}
	}

출처는 http://changhee.tistory.com/8 이곳입니다.

예를 들어 사용할때는 

		if (isNull(value)) {
			System.out.println("널이면 이쪽으로 오게 됩니다.");	
		}
		else{
			System.out.println("널이 아닐때는 이쪽으로 오게 됩니다.");
		}

이런식을로 사용하시면 될듯합니다.

728x90
반응형

'Java' 카테고리의 다른 글

자바 랜덤  (0) 2017.05.23
java 정렬  (0) 2017.05.23
java 파일용량 계산  (0) 2017.05.23
액티비티 할당된 메모리 즉시 반환하기  (0) 2016.01.12
Java 인스턴스 하나만 사용하기(싱글턴 패턴)  (0) 2015.06.29

 

 

 

싱글턴 패턴은 한마디로 인스턴스가 하나뿐인 객체를 말한다.


public class Singleton {
	private static Singleton single; // 유일한 인스턴스를 저장하기위한 정적변수

	private Singleton() //생성자를 private로 선언하였기때문에 Singleton클래스의 객체는 Singleton클래스에서만 만들 수 있습니다.
	{
	}

	public static Singleton getInstance() {
		if (single == null) {
			single=new Singleton();
			System.out.println("하나뿐인 인스턴스");
		}
		return single;
	}
}

메인 클래스는 다음과 같이 부르고 있습니다.

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Singleton single=Singleton.getInstance();
		Singleton single2=Singleton.getInstance();
		System.out.println("single 객체"+single);
		System.out.println("single2 객체"+single2);
	}

}


결과는 하나의 인스턴스만 사용하기때문에 다음과 같이 나옵니다.

하나뿐인 인스턴스
single 객체com.sington.one.Singleton@689d6d87
single2 객체com.sington.one.Singleton@689d6d87


결과가 이렇게 나와야 된다고 생각하시는분은 코드를 다시 천천히 다시보시길 바랍니다.)

하나뿐인 인스턴스
하나뿐인 인스턴스
single 객체com.sington.one.Singleton@689d6d87
single2 객체com.sington.one.Singleton@689d6d87


싱글톤 패턴에 대해 더욱 자세히 알고 싶으신 분은 

이곳으로 가시길
 http://wiki.gurubee.net/pages/viewpage.action?pageId=1507403&



728x90
반응형

'Java' 카테고리의 다른 글

자바 랜덤  (0) 2017.05.23
java 정렬  (0) 2017.05.23
java 파일용량 계산  (0) 2017.05.23
액티비티 할당된 메모리 즉시 반환하기  (0) 2016.01.12
Java Null Check 코드  (0) 2015.06.29

머티리얼 디자인 관련 URL

디자인 등 볼수잇는 자료들이 많이 있다.
http://www.materialup.com/posts/c/concepts

 

안드로이드 디벨롭에서 제공해주는 자료들
http://developer.android.com/training/material/index.html

 

 

머티리얼 디자인은 컬러들또한 규격화하여서 이런색깔들을 사용할것을 권장하고 있습니다.

이 색상 팔레트는 그림이나 브랜드 색상을 개발하는 데 사용할 수있는 기본 및 강조하는 색상을 포함한다. 그들은 서로 조화롭게 작동하도록 설계했습니다.

색상 팔레트는 기본 색상으로 시작과 안드로이드, 웹 및 iOS 용 완전하고 사용할 수있는 팔레트를 생성하기 위해 스펙트럼을 채 웁니다. 구글은 앱의 기본 색상과 악센트 색상과 다른 색상으로 500 색을 사용하여 제안합니다.

해당URL에서 안드로이드에 바로적용할 수 있도록 색상코드와 이러이러한식으로 앱을 디자인하면 더욱 이쁘게 된다는것을 알려주고 보여주고 있습니다.

http://www.google.com/design/spec/style/color.html#

 

해당 URL에서는 안드로이드에서 제공하는 기본 아이콘들을 다운로드 받을 수 있습니다.

http://google.github.io/material-design-icons/

Downloading everything

Grab the latest stable zip archive (~57MB) of all icons or the bleeding-edge version from master.


 

728x90
반응형



머티리얼 디자인 관련하여 정리2
http://www.google.com/design/spec/what-is-material/elevation-shadows.html#elevation-shadows-elevation-android-
해당페이지에서 번역한거라 오타와 틀린부분이 많이있습니다. 그냥 아~! 대충 이런거구나하고 보시면될거같습니다.

Elevation and shadows

머티리얼 상승과 그림자

머티리얼 디자인의 객체는 물리적 세계의 개체와 유사한 특성을 가지고있다. 실제 세계에서 개체가 누적 될 수 있거나 서로에 부착하지만, 서로를 통과 할 수 없습니다. 객체는 그림자와 빛을 반사.

이러한 특성은 사용자에게 친숙한 애플리케이션과 일관되게 적용 할 수있는 공간 모델을 형성한다. 이 공간 모델을 
뒷받침하는 고도와 그림자의 개념입니다.


Elevation (Android)

고도(높이)(안드로이드)

고도(높이)는 Z 축을 따라 두 표면 사이의 상대적인 깊이 또는 거리이다.

 

     

    Specifications:

    -고도(높이)는 전형적으로 독립적 픽셀 밀도 (DP)에서, x 및 y 축과 동일한 단위로 측정된다.
     머티리얼 소자 깊이를 가지고 있기 때문에 (모든 머티리얼은 1DP 두께이다),
     다른 고도의 선두에  하나의면의 상위로부터 거리를 측정한다.

    -자식 객체의 고도(높이)는 부모 객체의 고도(높이)를 기준으로합니다.


    Resting elevation

    고정된고도(높이)
    모든 머티리얼 객체가 사이즈에 상관없이 고정된높이나 기본높이값을 갖고있어서 사이즈는 변하지 않는다.
    만약에 높이가 변하게 되는 상황이 되면 다시 원래 고정값으로 바로 돌아가야한다.

      Elevation 표1.1

     

    Elevation (dp)

    Component

    24

    Dialog

    Picker

    23

    22

    21

    20

    19

    18

    17

    16

    Nav drawer

    Right drawer

    Bottom Sheet

    15

    14

    13

    12

    Floating action button (FAB - pressed)

    11

    10

    9

    Sub menu (+1dp for each sub menu)

    8

    Menu

    Card (picked up state)

    Raised button (pressed state)

    7

    6

    Floating action button (FAB - resting elevation)

    Snackbar

    5

    4

    App Bar

    3

    Refresh indicator

    Quick entry / Search bar (scrolled state)

    2

    Card (resting elevation)

    Raised button (resting elevation)

    Quick entry / Search bar (resting elevation)

    1

    Switch

    Component elevations

    Component 고도(높이) *위에 Elevation 표1.1을 참고

    - Component 타입에 대한 고정된 높이는 애플리케이션에 걸쳐 지속된다..
    (예를 들어,FAB(FloatingActionButton) 높이가 다른 응용 프로그램에서는 16dp
    하나의 응용 프로그램에서는 6dp로 변하지 않는다)

    -Component는 환경의 깊이(depth)에 따라 플랫폼에서 다른 고정된 높이를 가질 수있다
     (예를 들면, TV 보다도 모바일 또는 데스트톱이 더큰 깊이(depth)를 가진다.)

    Responsive elevation and dynamic elevation offsets

    반응높이 및 동적높이 offsets *위에 Elevation 표1.1을 참고

    어떤 Component 타입들은 반응높이를 가지는데
    그것은 사용자 입력(예를들어. normal, focused, and pressed)이나시스템이벤트에 의한 반응으로 높이가 변화한다는것을 의미한다.

    이 높이 변화들은 지속적으로 동적높이 Offsets을 실행한다.
    동적높이 
     Offsets는 Component의 원래상태로 향하는 목표높이이다


    그것들은 지속적으로 행동과 컴포넌트타입으로 향하는 높이변화를 보장한다
    (예를들어.프레스에 들어있는 모든 컴포넌트는 그것들의 고정된높이와 관련되어 같은높이변화를 가진다.) 

    한번 입력이벤트가 완료되거나 취소되면, 컴포넌트는 고정된높이로 돌아갑니다.

    Avoiding elevation interference

    높이의 간섭회피 *위에 Elevation 표1.1을 참고

    그들의 고정 높이 및 동적 높이 오프셋 사이에 이동 반응 높이와 구성 Component들과 다른 Component들과 발생할 수 있습니다. 다른 재료는 재료를 통과 할 수 없기 때문에, Component를 기준으로 하건 전체 앱 레이아웃을 쓰건, 컴포넌트들은 어느방법으로든지 서로 간섭하는걸 피한다

    Component 레벨단에서 간섭을 야기하기 전에 Component들은 이동하거나 제거 할 수 있다.

     

    예를 들어, 플로팅 액션 버튼 (FAB)가 사라지거나 사용자가 카드를 선택하기 전에 화면을 이동하거나, Snackbar가 표시된 경우에는 이동 할 수 있습니다.

    레이아웃 레벨단에서,  앱 레이아웃 디자인의 간섭 기회를 최소화하기 한다.
    예를들어 사용자가 카드 중 하나를 선택하려고 할 때 FAB(floating action button) 방해하지 않도록 예를 들어, 카드의 스트림의 한쪽 FAB(floating action button)를 놓습니다.

     

    Component elevation comparisons

    Component 고도(높이) 비교

    다음 그림은 다양한 Component의 고정된높이 및 동적 높이의 오프셋 (offset)를 비교합니다.

    이 그림에서, components들의 높이의 치수 그리고 레이아웃은 정확합니다.

     

    예를 들어  z축 을따라 컴포넌트 높이의 단면도와 함께 앱레이아웃 카드와  FAB(floating action button)  

     

    이 그림은 그 Z 축을 따라 해당 컴포넌트의 입면 단면도와 함께 오픈 네비게이션 드로우어블과 앱 레이아웃.

     

    그림자(Shadows)

    그림자는 객체의 깊이와 방향 움직임에 대해 사용자에게 중요한 시각적 단서를 제공한다.
    그림자는 표면 사이의 분리의 양을 나타내는 유일한 시각적 역할이다.
    객체의 높이는 그림자의 모양을 결정합니다.

     

    하지마세요

    그림자가 없으면 floating action button은 배경 표면으로부터 분리되는 것이 보여지지 않는다.

     

    하지마세요

    선명한 그림자가 floating action button과 블루 시트가 다른 요소임을 나타냅니다.
    그러나 그 그림자들은 모두 같은 높이에 있어서 의미하는 것이 매우 비슷합니다.

    (플로팅 버튼이 더높게 잇으니깐 그림자를 더부드럽고 크게 주라는 말 같군요)

    이렇게 하세요

    더부드럽고 큰 그림자는 플로팅 버튼을 가르키는데 이 플로팅버트은 선명한 그림자를 갖는 블루시트 보다 더 높은 높이에 있다

    (한마디로 플로팅버튼에 높이가 더 높으니 그림자를 더크고 부드럽게 되어있고 블루시트 더 낮은 높이에 잇으니 선명한 그림자를 갖는다는 말 같군요)

     

     모션은 그림자 이동 객체의 방향에 대한 표면 사이의 거리가 증가 또는 감소 여부의 유용한 단서를 제공한다.

     

    그림자의 고도를 나타내지 않으면,이 사각형의 크기가 증가하거나 높이가 증가되어 있는지 불분명하다.

     

     

     그림자는 객체의 높이가 증가함에 따라 부드럽고 더 크게 보여지고 높이가 감소함에 따라 선명하고 작게 보여진다.

     

     

     이경우 지속적인 그림자 도움으로 사용자는 높이의 변화와는 대조적으로 객체가 모양을 변화시키고 있음을 이해합니다.

     

     


    728x90
    반응형

    + Recent posts