----------------------------------------------------------CODE--------------------------------------------------------------


ImageView line1 = (ImageView)mBase.findViewById(R.id.month_line1);


//상위 뷰가 <LinearLayout>이기 때문에 LinearLayout.LayoutParams을 사용한다
// mLine1.getLayoutParams(); == mLine1의 기존 레이아웃 파라미터를 가져온다.

LinearLayout.LayoutParams liControl1 = (LinearLayout.LayoutParams) mLine1.getLayoutParams();    

  liControl1.setMargins(0, height, 0, 0);    // liControl1객체로 width와 hight등 파라미터를 다 설정가능

  mLine1.setLayoutParams(liControl1);

   
----------------------------------------------------------XML--------------------------------------------------------------


<LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:layout_marginTop="21dp"

        android:orientation="vertical" >

        <ImageView

            style="@style/sch_style_Img_MonthLine"

            android:layout_marginTop="1dp" />


        <ImageView

            android:id="@+id/month_line1"

            style="@style/sch_style_Img_MonthLine"

          />



    </LinearLayout>






728x90
반응형

private int convertPx(int size) {

return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, getResources().getDisplayMetrics());

}

private int convertDip(int size) {

return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, size, getResources().getDisplayMetrics());

}



728x90
반응형

public static int SCREEN_WIDTH = 0;

public static int SCREEN_HEIGHT = 0;


/**

* 소프트키를 포함한 화면 전체해상도를 가져온다.

* @param context

*/

public static void setScreenInfo(Context context){

if(Build.VERSION.SDK_INT>=14)

{

android.view.Display display = ((WindowManager) context.getSystemService(context.WINDOW_SERVICE)).getDefaultDisplay();

Point realSize = new Point();

try {

Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

SCREEN_WIDTH=realSize.x;

SCREEN_HEIGHT=realSize.y;

}else{

DisplayMetrics dmath=context.getResources().getDisplayMetrics(); // 화면의 가로,세로 길이를 구할 때 사용합니다.

SCREEN_WIDTH=dmath.widthPixels;

SCREEN_HEIGHT=dmath.heightPixels;

}

}


/**

* 소프트키를 미포함한 화면 전체해상도를 가져온다.

* @param context

*/

public static void setNoSoftKeyScreenInfo(Context context){

DisplayMetrics dmath=context.getResources().getDisplayMetrics(); // 화면의 가로,세로 길이를 구할 때 사용합니다.

SCREEN_WIDTH=dmath.widthPixels;

SCREEN_HEIGHT=dmath.heightPixels;

}


/**

* 소프트키 존재 여부를 가져온다.

* @param context

*/

public static boolean isScreenSoftKey(Context context) {

boolean isKey = false;

if (Build.VERSION.SDK_INT >= 14) {

boolean hasMenuKey = ViewConfiguration.get(context)

.hasPermanentMenuKey();

boolean hasBackKey = KeyCharacterMap

.deviceHasKey(KeyEvent.KEYCODE_BACK);


if (!hasMenuKey && !hasBackKey) {

isKey = true;

} else {

isKey = false;

}

} else {

isKey = false;

}

return isKey;

}

728x90
반응형

'Android' 카테고리의 다른 글

안드로이드 코드에서 마진 주기  (0) 2016.06.22
안드로이드 Px to Dip  (0) 2016.06.22
안드로이드 리스트 뷰 만들기  (0) 2016.01.25
버튼 Press 정의  (0) 2016.01.12
안드로이드 Menu 객체 만들기  (0) 2016.01.05


1. 쿠키 생성

cookieCreate.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<% Cookie cookie = new Cookie("cookieName","cookieVel");

cookie.setMaxAge(60*60); // 유효기간 설정 (초)

cookie.setSecure(true); // 쿠키를 SSL 이용할때만 전송하도록

cookie.setHttpOnly(true); // https 일때(보안)  

response.addCookie(cookie);

%>


<a href="cookieGet.jsp">cookie Get</a>

</body>

</html>

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

2. 쿠키 가져오기

cookieGet.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

Cookie[] cookies = request.getCookies();    //생성된 쿠키를 가져온다.

for(int i= 0; i<cookies.length;i++){

out.println("cook["+i+"] name="+cookies[i].getName()+"<br/>");

out.println("cook["+i+"] val="+cookies[i].getValue()+"<br/>");

}

%>

<a href="cookieDel.jsp">cookie Del</a>

</body>

</html>

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

3. 쿠키 삭제

cookieDel.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<%

Cookie[] cookies = request.getCookies();

for (int i = 0; i < cookies.length; i++) {

if (cookies[i].getName().equals("cookieName")) {

cookies[i].setMaxAge(0);   // 유효시간을 0으로 설정함으로써 쿠키를 삭제 시킨다.  

response.addCookie(cookies[i]);

}

}

%>

<a href="cookieGet.jsp">cookie Get</a>

</body>

</html>




728x90
반응형



뷰홀더를 사용한 리스트뷰를 간단히 만들었습니다. 해당소스는 버튼을 누르면 리스트 뷰에 데이터가 들어가는 동작을 합니다.

MainActivity.java

package com.example.shinseongil.testlist;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    private ListView mListView;
    private Button mButton;
    private ArrayList mTestArr; // 데이터 ArrayList
    private MainAdapter mMainAdapter; // 어댑터 클래스
    private boolean mIsInitAdapter = false; //어댑터 초기화 여부
    private int mNumber; //리스트에 표시하는 숫자

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mButton = (Button) findViewById(R.id.test_btn);
        mListView = (ListView) findViewById(R.id.test_list);
        mTestArr = new ArrayList<>();
        mMainAdapter = new MainAdapter(this);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initData();
                initList();
            }
        });

    }

    private void initList(){
        if (!mIsInitAdapter) {
            mListView.setAdapter(mMainAdapter);
        } else {
            mMainAdapter.notifyDataSetChanged();
        }
    }


    /**
     * 데이터 초기화
     */
    private void initData() {
        for (int i = 0; i < 10; i++) {
            TestData testData = new TestData();
            testData.id = mNumber;
            testData.name = "테스트" + mNumber;
            testData.date = "" + new Date().getTime();
            mTestArr.add(testData);
            mNumber++;
        }
    }

    private class MainAdapter extends BaseAdapter {
        private Context mContext;
        LayoutInflater mInflater;

        public MainAdapter(Context context) {
            this.mContext = context;
            mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return mTestArr.size();
        }

        @Override
        public Object getItem(int position) {
            return mTestArr.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TestViewHolder testViewHolder;

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.test_list_item, null);
                testViewHolder = new TestViewHolder();
                testViewHolder.testId = (TextView) convertView.findViewById(R.id.test_list_id);
                testViewHolder.testName = (TextView) convertView.findViewById(R.id.test_list_name);
                testViewHolder.testDate = (TextView) convertView.findViewById(R.id.test_list_date);
                convertView.setTag(testViewHolder);
            } else {
                testViewHolder = (TestViewHolder) convertView.getTag();

            }
            testViewHolder.testId.setText("" + mTestArr.get(position).id);
            testViewHolder.testName.setText(mTestArr.get(position).name);
            testViewHolder.testDate.setText(mTestArr.get(position).date);

            return convertView;
        }
    }

    /**
     * 홀더 클래스
     */
    public class TestViewHolder {
        public TextView testId;
        public TextView testName;
        public TextView testDate;
    }

    /**
     * Data 클래스
     */
    public class TestData {
        int id;
        String name;
        String date;
    }
}


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.shinseongil.testlist.MainActivity">

<Button
android:id="@+id/test_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Touch Button"
/>

<ListView
android:id="@+id/test_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/test_btn" />
</RelativeLayout>


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

<TextView
android:id="@+id/test_list_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:text="New Text" />

<TextView
android:id="@+id/test_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text" />

<TextView
android:id="@+id/test_list_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text" />
</LinearLayout>





728x90
반응형

 

 

이번에 새해를 맞아 새로 지른 노트북 이름하여 P56 MGA770 현재 네이버에서는 약70만원이 최저가 인데요

70만원이기에는 사양이 좀 좋습니다. 한성노트북은 거의 이런식의 노트북이 많더군요 가격의 비해 사양이 좋은? 근데 어떤사람들은 복불복(멀쩡한건 멀쩡한데 불량인건 장난아니라고...)이라하고 어떤사람은 안좋다하고 어떤사람은 좋다하는 등 뭐 여러가지 의견이 있어서 저도 좀 걱정을하고 있는데요 일단 뭐 아직까지는 괜찮은거 같습니다. 


이야~! 확실히 CPU 부터가 빨간글씨로 "스카이레이크"라고 쓰여져 있네요 보시다시피 CPU는 i5인데요 이번에 새로나온 스카이레이크가 장착되어있습니다. 제가 주관적으로 알고 있기로는 4세대와 5세대 I5는 듀얼코어 이하로 알고있습니다. 그런데 이번에 나온 6세대 i5는 쿼드코어 더군요.그리고 그래픽은 GT 940을 지원해주는데 GTX 940이랑 헷갈리시면 안됩니다
그래픽은 비슷한가격 다른 노트북에 비해 좀 떨어지는 감이없지 않아있지만 나머지는 다른 회사랑 아마 비슷하지않을까 싶습니다.(다른 스펙은 자세히 보지않아서요)

저같은경우는 오자마자 불량인지 테스트해보고 m.2 SSD 256GB 를 장착하였습니다.

그리고 램을 사서 8G 장착하였구요 SSD는  m.2 SSD 256GB를 장착하였습니다.(확실히 SSD 달아야합니다.
이제 HDD는 못쓰겠더라구요 여러분도 SSD 사서 꼭 달아보세요 다른세상 보입니다.) 

위의 사진은 실제 내부모습인데요 내부 모습을 보기 위해서는 나사를 다 풀고 분홍색 화살표 모양 처럼 당겨주시면 손쉽게 내부 모습을 볼 수 있습니다.

내부를 간단히 설명드리자면 싱글 쿨러구요  파란색선은 RAM입니다. 저는 4G(원래 스펙)에서 8G를 추가하였구요

빨간색선은 m.2 SSD장착하는 곳입니다. 저는 마이크론 m.2 ssd 256G를 장착하였습니다. 그리고 m.2 SSD 옆에는 하드 디스크가 장착된 곳 입니다. 


728x90
반응형

버튼이나 컴포넌트에 press 효과를 주기 위해서는 drawable에 xml파일을 정의 합니다.

일반 버튼일 경우

<?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/ic_check_box_24dp" />

    <item android:state_checked="false" // 언체크 되었을 경우

        android:drawable="@drawable/ic_check_box_outline_24dp" />

</selector>

-----------------------------------------------------------------------------------------------------
컬러로 주고 싶은 경우

"@color/colorButtonPress" 와 "@color/colorButton"에 원하는 컬러를 넣어 주면 됩니다.

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

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

    <item android:state_pressed="true" > //눌렸을 경우

        <shape android:shape="rectangle">

            <solid android:color="@color/colorButtonPress" />

        </shape>

    </item>

    <item> // 안눌렸을 경우

        <shape android:shape="rectangle">

            <solid android:color="@color/colorButton"/>

        </shape>

    </item>

</selector>

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


레이아웃에서의 정의는 android:background="@drawable/button_selector" 과 같이 정의해주시면 됩니다.

<Button

                android:id="@+id/get_content_cancel_btn"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_weight="1"

                android:background="@drawable/button_selector"

                android:text="@string/cancel"

                android:textColor="@color/white"

                android:textStyle="bold" />

728x90
반응형

이미지가 커서 많은 메모리를 점유하고 있거나, 다음 Activity에서 메모리가 많이 필요한 작업을 할 경우에 OOM(out of memory)을 유발시킬 수 있는 요인이 될 수 있는데, 이를 간단히 해결하는 방법은 다음과 같다.

@Override
    protected void onDestroy() {
        super.onDestroy();
        findViewById(R.id.rootView).setBackground(null);
        System.gc();
    }
728x90
반응형

'Java' 카테고리의 다른 글

자바 랜덤  (0) 2017.05.23
java 정렬  (0) 2017.05.23
java 파일용량 계산  (0) 2017.05.23
Java Null Check 코드  (0) 2015.06.29
Java 인스턴스 하나만 사용하기(싱글턴 패턴)  (0) 2015.06.29

+ Recent posts