'2017/01'에 해당되는 글 563건

  1. 2017.01.12 mysql 관리 Tool
  2. 2017.01.12 Join 후 Update하기
  3. 2017.01.12 mysql Rownum 구현하기
  4. 2017.01.12 문자열 결합
  5. 2017.01.12 Toast 모양 변경하기
  6. 2017.01.12 3. log4j.xml 파일 예제
  7. 2017.01.12 2. log4j 기본 설명
  8. 2017.01.11 scaleType 에따른 표시 효과
  9. 2017.01.09 Dynamic Layout Create
  10. 2017.01.09 ToggleButton(버튼2개로)

** mysql 관리 Tool **

 

 

1. URL : http://bryan7.tistory.com/109

'(DB) MySql > 설치 및 초기DB작업' 카테고리의 다른 글

5. MySQL - TABLE 생성  (0) 2017.01.22
4. MySQL - DB 접속  (0) 2017.01.22
3. MySQL - DB 생성  (0) 2017.01.22
2. MySQL - Workbench 설치  (0) 2017.01.22
1. MySql 설치  (0) 2017.01.18
Posted by 농부지기
,

** Join 후 Update하기 **

 

1. 기본 예문

   UPDATE 테이블명 as A_table

          SET 업데이트할필드명  = (SELECT 선택필드

                                                     FROM 테이블명 as B_table

                                                   WHERE A_table.공통ID = B_table.공통ID);

2. Join후 Update구문

    UPDATE [테이블A] , [테이블B] b

          SET a.컬럼1 = b.컬럼1

     WHERE a.컬럼2 = b.컬럼2 ;

    

 

3. Join후 Update구문

    UPDATE 후원테이블 A INNER JOIN 회원테이블 B
                      ON A.회원아이디 = B.회원아이디
           SET B.회원등급 = 7
      WHERE B.회원등급 = 9 AND A.후원금 >= 10000 ;

 

 

4. mysql에서는 서브쿼리의 form절과 업데이트 target 모두를 같은 테이블로 사용할 수 없다
      update tbl_a
           set no = 'a'
         where seq in (
select * from ( select seq from tbl_a where x = 'b' ) as t )
     한번더 감싸준다.

 

 

 

Posted by 농부지기
,

** Rownum 구현하기**

 

1. sql

   SELECT @rnum := @rnum + 1

      FROM (SELECT @rnum := 0) rn

 

2. SELECT @rnum := 0  : from 절에  @rnum 이라는 변수 생성 및 초기화

    @rnum := @rnum + 1 : 컬럼 절에   @rnum 을 add한다.

 

 

3. set구문을 사용하여 rownum

    SET @rnum := 0;

 

    SELECT @rnum := @rnum + 1

         FROM 테이블명;

 

4. FROM절에서 초기화

    SELECT @rnum := @rnum + 1

       FROM (SELECT @rnum := 0) rn

 

5. WHERE절에서 초기화

    SELECT @rnum := @rnum + 1

       FROM 테이블명

    WHERE (@rnum := 0) = 0;    

Posted by 농부지기
,

** 문자열 결합 **

 

 

MySQL 함수중 GROUP_CONCAT과 CONCAT, CONCAT_WS 가 있다.
이 함수를 이용하면 우리가 원하는 결과를 얻을 수 있다.

1. CONCAT


CONCAT는 Field를 하나의 문자열로 묶어주는 함수이다.
다음과 같이 사용할 수 있다.

CONCAT 예제 (Language : sql)
SELECT CONCAT(`IDX`,'|',`NAME`,'|',`EMAIL`) FROM USER_TEST;

 

 


결과는 다음과 같다.

1|지도리|jidori@nnn.com
2|지돌스타|jidolstar@nnn.com
3|방실이|bangsiri@nnn.com
4|설운도|seolundo@nnn.com
5|박주영|juyoung@nnn.com
6|이효리|hyri@nnn.com


2. CONCAT_WS


CONCAT_WS는 CONCAT과 거의 비슷하다. 하지만 구분자를 한번에 지정할 수 있다는 것이 특징이다.

CONCAT_WS 예제 (Language : sql)
SELECT CONCAT_WS('|', `IDX``NAME``EMAIL`) FROM USER_TEST;



결과는 CONCAT과 완전 동일하다.

3. GROUP_CONCAT


이 함수를 이용하면 GROUPING된 Record를 원하는 구분자를 이용해 문자열로 통합할 수 있다.

예시는 다음과 같다.

GROUP_CONCAT 예제 (Language : sql)
SELECT GROUP_CONCAT(NAME SEPARATOR ';') FROM USER_TEST GROUP BY GROUPNUM;


결과는 다음과 같다.

지도리;지돌스타
방실이;설운도;이효리
박주영

단, 이것만 기억하자. group_concat_max_len 시스템 변수에 의해 최대허용길이를 설정할 수 있는데, default값이 1024이다. 만약 1024byte가 넘어가면 GROUP_CONCAT에 의해 붙은 문자열은 잘린다.

예문2) 결과 컬럼 약쪽에 '(single quote 넣기)

SELECT GROUP_CONCAT("'", part_cd, "'" ) AS part_cd_multi

  FROM hanjul.TPartition ;

결과 : '001', '002', '004' 




제대로 사용해보기 


Query문 부터 보자. 

가로행과 세로열을 모두 구분자로 묶기 (Language : sql)
SELECT  GROUP_CONCAT(
    CONCAT_WS('|'`IDX``NAME``EMAIL`) 
    SEPARATOR '@') 
FROM USER_TEST 
GROUP BY GROUPNUM;
 


결과는 다음과 같다. 

1|지도리|jidori@nnn.com;2|지돌스타|jidolstar@nnn.com
3|방실이|bangsiri@nnn.com;4|설운도|seolundo@nnn.com;6|이효리|hyri@nnn.com
5|박주영|juyoung@nnn.com

이 방법을 사용하면 한번의 Query로 처음에 보여준 PHP코드 처럼 할 필요가 없다는 것을 알 수 있을 것이다.

참고사이트

오라클에서 하는 방법 : http://blog.naver.com/xsoft/150017833358
GROUP_CONCAT() 메뉴얼 : http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
CONCAT() 및 CONCAT_WS() 메뉴얼 : http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat

'(DB) MySql > String 함수' 카테고리의 다른 글

MySql - 문자열 변경. Replace  (0) 2017.01.18
MySql - 문자열 찾기.Find  (0) 2017.01.18
Posted by 농부지기
,

** Toast 모양 변경하기 **

 

0. 프로젝트명 : ToastModify

1. Toast컬러 변경 및 layout을 이용한 Toast변경

 

2. 소스

    1. MainActivity.xml              : layout 조회 및 Toast보여주기

    2. drawable/toast.xml        : Toast모양 변경

    3. layout/activity_main.xml : main activity

    4. layout/activity_toast.xml : Toast모양을 변경 할 Layout. Activity. View

 

3. 화면 :

    - Toast의 좌표

       .  메소드 : Toast.setGravity(int gravity, int xOffset, int yOffset)

       .  gravity : Toast의 기본 위치 지정 (TOP, LEFT, CENTER..)

       .  xOffset, yOffset : gravity 기본 위치를 기준으로 x, y 좌표임

       .  예)  toast.setGravity(Gravity.TOP | Gravity.LEFT150, 300);

 

    - [단순 토스트표시] 버튼 클릭 시 Toast

        

 

   - [LAYOUT토스트 표시]버튼  클릭 시 Toast

       . activity_toast.xml layout을 이용해서 생성

       . drawable/toast.xml 파일에 shape, strok, solid, padding, corner, gradient   tag등을 통해서 Toast 모양 변경

       


 

 

  1. MainActivity.xml

 

package com.example.farmer.toastmodify;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button button;
    Button button2;

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

        button = (Button) findViewById(R.id.button);
        button2 = (Button) findViewById(R.id.button2);

        button.setOnClickListener(toastOnclickListener);
        button2.setOnClickListener(layoutOnclickListener);
    }

    Button.OnClickListener toastOnclickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Toast toast = Toast(getApplicationContext());
            //toast.setText(sResult);
            //toast.setDuration(Toast.LENGTH_LONG);

            String notes = "토스트 내용";

            Toast toast = Toast.makeText(getApplicationContext(), notes, Toast.LENGTH_SHORT);

            //Toast 위치 지정.
            //x,y 좌표는  TOP, LEFT 의 위치에서 시작되는 좌표임
            toast.setGravity(Gravity.TOP | Gravity.LEFT150, 300);

            //Toast는 View를 상속받지 않아서 직접View 객체에 대한 속성을 넣을 수 없다.
            //대신 getView()메소드를 통해서 View객체를 받아서 View속성정의 하면 Toast속성에 적용 된다.
            View viewToast = toast.getView();

            //Toast BackgroundColor 변경
            //color 표기시 xml 에서는 "#ffffff"로 하지만
            //java 코드에서는 아래와 같이 rgb로 변환하여 사용해줘야 한다.
            viewToast.setBackgroundColor(Color.rgb(255, 0, 255));

            //Toast Font Color변경
            TextView tvToast = (TextView) viewToast.findViewById(android.R.id.message);
            tvToast.setTextColor(Color.RED);

            toast.show();

            //Toast.makeText(getApplicationContext(), notes, Toast.LENGTH_LONG).show();
        }
    };

    Button.OnClickListener layoutOnclickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //토스트 모양을 정의하고 있는 레이아웃을 인플레이션 한다.
            //기존 토스트 모양을 작성한 toastborder.xml로 인플레이션 한다.
            LayoutInflater inflater = getLayoutInflater();
            View layout = inflater.inflate(R.layout.activity_toast,
                    (ViewGroup)findViewById(R.id.toast_layout_root));

            //레이아웃의 텍스트뷰에 보여줄 문자열을 설정한다.
            TextView text = (TextView)layout.findViewById(R.id.text);
            text.setText("Layout을 이용한 토스트");

            //토스트 객체 만들기
            Toast toast = new Toast(MainActivity.this);

            //토스트가 출력될 위치를 지정
            //x,y 좌표는  CENTER 의 위치에서 시작되는 좌표임
            toast.setGravity(Gravity.CENTER, 0, -200);

            toast.setDuration(Toast.LENGTH_SHORT);

            //토스트에 뷰를 설정
            toast.setView(layout);

            //토스트 부여주기
            toast.show();
        }
    };
}

 

 

 

  2. drawable/toast.xml

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!--
      1. stroke    : 테두리 선
      2. solid      : Toast 내부 색 설정
      3. padding : 여백
      4. corners : 모서리 설정
      5. gradient : 경사도. 변화도
    -->
    <stroke
        android:width="4dp"
        android:color="#ff0008"
        android:dashWidth="5dp"
        android:dashGap="2dp"/>

    <solid
        android:color="#ff883300"/>

    <padding
        android:left="20dp"
        android:top="20dp"
        android:right="20dp"
        android:bottom="20dp"/>

    <corners
        android:radius="100dp"/>

    <gradient
        android:startColor="#ffff0000"
        android:endColor="#80ff00ff"
        android:angle="270"/>

</shape>

 

 

 

 

  3. layout/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:id="@+id/activity_main"
    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.farmer.toastmodify.MainActivity">

    <Button
        android:id="@+id/button"
        android:text="단순 토스트 표시"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button2"
        android:text="Layout 토스트 표시"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@id/button"
        android:layout_height="wrap_content" />

</RelativeLayout>

 

 

 

 

  4. layout/activity_toast.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:orientation="horizontal"
    android:background="#00ffff"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:background="@drawable/toast"/>

</LinearLayout>

 

 

 

Posted by 농부지기
,
[ log4j.xml   파일 예제 ]


'Web. 기타 언어 > log4j. slf4j' 카테고리의 다른 글

4. slf4j - 예제  (0) 2018.10.31
1. Log4j 구성 방법  (0) 2017.01.25
2. log4j 기본 설명  (0) 2017.01.12
Posted by 농부지기
,

프로그램작성시 로그를 남기는 목적으로 만든 프레임워크.

기본은 log4j.jar파일이 있고

확장파일로는 jdbcappender.jar와 ojdbc14.zip파일등이 있다.

 

log4j configuration 파일 설정하기

 

root looger설정

log4j.rootLogger=INFO(로그레벨), console, filelog, dblog(형식)

 

로그레벨을 설정하고 뒤에 root appender를 설정한다.  console(화면출력), filelog,dblog

log level은 debug,info,warn,error,fatal로 구성되고 debug제외 모든 로그가 기록된다.

① FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용합니다. 하위

② ERROR : 일반 에러가 일어 났을 때 사용합니다.                    

③ WARN : 에러는 아니지만 주의할 필요가 있을 때 사용합니다. 1,2,3

④ INFO : 일반 정보를 나타낼 때 사용합니다.  1,2,3,4나타냄

⑤ DEBUG : 일반 정보를 상세히 나타낼 때 사용합니다. 최상위 모두1,2,3,4,5를 모두 나타낸다

 

 

그렇지만 예외적으로 선택적 패키지별로 로그를 사용할수 있다. 이것은

# package logging setting
log4j.logger.com.test(패키지명)=FATAL,logfile 이렇게 해주면 된다.

 

layout타입 : patternlayout

%p : debug,info 로그타입

%d : 로그발생시간 (%d{yyyy-MM-dd HH:mm:ss})

%t :로그 쓰레드 이름

%F: 로그 발생 프로그램 파일명(%F{파일명}

%M : 로그 발생메소드명

%r : 프로그램 시작후 로그 발생까지 시간

%m : 로그로 전달된 메세지

%n: 개행

%L 호출 코드 라인

 

참조한거다 다른 분이 올린거..

[%c] [%C] [%d] [%F] [%l] [%L] [%m] [%M] [%n] [%p] [%r] [%t] [%x] [%X]는 다음과 같다

admin.jsp] [org.apache.jsp.admin_jsp] [2011-02-10 11:30:22,21] ADMIN_jsp.java] [org.apache.jsp.test_jsp._jspService(test_jsp.java:64)] [64][fatal!!] [_jspService] [개행] [FATAL] [765567] [http-8080-Processor25] [] []

 

실제적용

먼저 web.xml에 적용

  <context-param>
     <param-name>log4jConfigLocation</param-name>
     <param-value>/WEB-INF/properties/log4j.properties</param-value>
    </context-param>

속성저장log4j.properties파일

 

## 세팅 stdout,rolling 두개의 appender add

log4j.rootLogger=DEBUG,stdout,fout 디폴트 로그 남기기 
## 콘솔에 출력하기위한  stdout생성
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
## Pattern
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# 호출자의 이름과 라인번호기록

log4j.appender.stdout.layout.ConversionPattern=[%d] %c (%F %L) -%m -%n
# roll 파일이름 설정


## 파일에 출력하기위한  fout생성

 

log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender
## 이클립스의 경우에는  이클립스 자체경로C:\myjava\eclipse가 root가 되어버렸다.
log4j.appender.fout.File=logs/log4j.log\t
log4j.appender.fout.ImmediateFlush=true
log4j.appender.fout.Append=true\t
log4j.appender.fout.DatePattern='.'yyyy-MM-dd-HH(매시간마다)-mm(매분마다)
log4j.appender.fout.layout=org.apache.log4j.PatternLayout
log4j.appender.fout.layout.ConversionPattern=[%d] %c (%F %L) -%m -%n

 

실행방법

 

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;

 

   Logger log=Logger.getLogger(this.getClass());
   log.debug("자료설정"); info fatal등 속성에 따라 나온다.

이런식으로 넣어주면 알아서 로그파일이나 db에 생성해준다.


참조 : http://blog.naver.com/kimura777/110107337809

[출처] log4j|작성자 숲이면서 나무


'Web. 기타 언어 > log4j. slf4j' 카테고리의 다른 글

4. slf4j - 예제  (0) 2018.10.31
1. Log4j 구성 방법  (0) 2017.01.25
3. log4j.xml 파일 예제  (0) 2017.01.12
Posted by 농부지기
,

** ImageView속성중 scaleType 에따른 표시 효과 **

 

 

 

  1. ImageView 설정 예제

 

<ImageView
    android:id="@+id/image1"
    android:layout_width="100dp"
    android:layout_height="400dp"
    android:src="@mipmap/kokonut"
    android:scaleType="centerCrop"
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true" />

 

 

 

 

2. 8 가지 Type

         - 주의 할점은 이 속성은 android:src로 이미지를 불러왔을 때 적용되며 

             android:background로 불러오면 이 속성은 적용 되지 않는다.

속성값

java

설명

matrix

setScaleType(ImageView.ScaleType.MATRIX)

원본 크기 그대로 보여줌 (왼쪽 상단 정렬)

Center

setScaleType(ImageView.ScaleType.CENTER)

원본 크기 그대로 보여줌 (가운데정렬)

centerCrop

setScaleType(ImageView.ScaleType.CENTER_CROP)

View 영역에 공백이 있으면 채워서 보여줌(비율유지)

(ImageView 영역은 match_parent(fill_parent)이다)

ImageView 영역에 공백이 있을 경우 비율을 유지하며 이미지를 늘린다.

centerInside

setScaleType(ImageView.ScaleType.CENTER_INSIDE)

View 영역을 벗어나면 맞춰서 보여줌(비율유지)

centerCrop과는 반대로 ImageView 영역을 벗어나면 비율을 유지하며 줄어든다.

fitStart

setScaleType(ImageView.ScaleType.FIT_START)

View 영역에 맞게 보여줌 (왼쪽상단 정렬비율유지)

fitStart centerInside와 같으며 정렬은 왼쪽 위라는 것이 다르다.

fitCenter

setScaleType(ImageView.ScaleType.FIT_CENTER)

View 영역에 맞게 보여줌 (가운데정렬비율유지)

fitCenter centerInside와 같은 기능을 한다.

fitEnd

setScaleType(ImageView.ScaleType.FIT_END)

View 영역에 맞게 보여줌 (왼쪽하단 정렬비율유지)

fitEnd centerInside와 같으며 정렬은 왼쪽 아래인 것이 다르다.

fitXY

setScaleType(ImageView.ScaleType.FIT_XY)

View 영역을 가득 채워서 보여줌(비율유지 안함)

fitXY는 비율에 상관없이 ImageView영역을 가득 채운다.

Posted by 농부지기
,

** Dynamic Layout Create **

 

1. 프로젝트명 : ToggleCustom

2. 정의 : activity_main.xml을 사용하지 않고 java단에서 Layout을 생성하기

3. 화면 :

   

 

4. 안드로이드 버전

     - 스튜디오 : v2.2.3

     - Minumum SDK : API 19:Android 4.4. (KitKat)

 

5. 소스목록

   1. MainActivity.java 

 

6. 소스

 

  1. MainActivity.java

 

 package com.example.farmer.layoutjavacreate;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

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

        useDynamic();
    }
    //동적으로 Layout및 버튼 생성
    private void useDynamic(){
        //1. Layout 생성
        LinearLayout layoutMain = new LinearLayout(getApplicationContext());
        LinearLayout.LayoutParams paramsLayout = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        layoutMain.setOrientation(LinearLayout.VERTICAL);
        layoutMain.setLayoutParams(paramsLayout);
        //layoutMain.setBackground(Color.parseColor("#ffffff"));

        //2. Button 생성
        Button button01 = new Button(getApplicationContext());
        Button button02 = new Button(getApplicationContext());
        LinearLayout.LayoutParams paramsButton = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        button01.setLayoutParams(paramsButton);
        button02.setLayoutParams(paramsButton);

        layoutMain.addView(button01);
        layoutMain.addView(button02);

        button01.setText("버튼 1");
        button02.setText("버튼 2");

        setContentView(layoutMain);  //layoutMain은 View임
    }
}

 

Posted by 농부지기
,

** ToggleButton(버튼2개로) **

 

 

1. 프로젝트명 : ToggleCustom

2. 버튼 2개를 이용해서 ToggleButton만들기

3. 화면 :

       

 

4. 안드로이드 버전

     - 스튜디오 : v2.2.3

     - Minumum SDK : API 19:Android 4.4. (KitKat)

 

5. 소스목록

   1. MainActivity.java 
   2. activity_main.java
   3. drawable/selector_btn_left.xml                    : 왼쪽 버튼 선택 시
   4. drawable/selector_btn_right.xml                 : 오른쪽 버튼 선택 시
   5. drawable/selector_buttons_text.xml            : 선택된 버튼
   6. drawable/shape_btn_unselected_left.xml   : 왼쪽 버튼 미 선택 시
   7. drawable/shape_btn_unselected_right.xml : 오른쪽버튼 미 선택 시
   8. values/colors.xml                                       : color
 

6. 소스

 

 1. MainActivity.java 

 

package com.example.farmer.togglecustom;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button test1Button;
    Button test2Button;

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

        test1Button = (Button)findViewById(R.id.test1_button);
        test2Button = (Button)findViewById(R.id.test2_button);

        test1Button.setOnClickListener(topButtonsListener);
        test2Button.setOnClickListener(topButtonsListener);
        test1Button.performClick();  //첫번째 버튼을 눌린 효과를 줌
    }

    View.OnClickListener topButtonsListener  = new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            if (view.getId() == R.id.test1_button){
                test1Button.setSelected(true);
                test2Button.setSelected(false);
            }
            else{
                test1Button.setSelected(false);
                test2Button.setSelected(true);
            }
        }
    };


}

 

 

  2. activity_main.java

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    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.farmer.togglecustom.MainActivity">

        <Button
            android:id="@+id/test1_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:layout_weight="1"
            android:textColor="@color/selector_buttons_text"
            android:background="@drawable/selector_btn_left"
            android:text="Test 1"/>

        <Button
            android:id="@+id/test2_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:textColor="@color/selector_buttons_text"
            android:background="@drawable/selector_btn_right"
            android:text="Test 2"
            android:layout_weight="1"/>


</LinearLayout>

 

 

 

  3. drawable/selector_btn_left.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@color/gen_app_color" android:state_pressed="true" />
    <item android:drawable="@color/gen_app_color" android:state_selected="true" />
    <item android:drawable="@drawable/shape_btn_unselected_left" />
</selector>

 

 

 

  4. drawable/selector_btn_right.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@color/gen_app_color" android:state_pressed="true" />
    <item android:drawable="@color/gen_app_color" android:state_selected="true" />
    <item android:drawable="@drawable/shape_btn_unselected_right" />
</selector>

 

 

 

  5. drawable/selector_buttons_text.xml

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@android:color/white" />
    <item android:state_pressed="true" android:color="@android:color/white" />
    <item android:color="@color/gen_app_color"/>
</selector>

 

 

 

  6. drawable/shape_btn_unselected_left.xml

 

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white"/>
            <stroke android:width="5px" android:color="#337799" />
        </shape>
    </item>
    <item android:left="5dp"
        android:top="2dp"
        android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
        </shape>
    </item>
</layer-list>

  

 

  7. drawable/shape_btn_unselected_right.xml

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="gen_app_color">#40ffe6</color>
    <color name="selector_buttons_text">#ff404a</color>
</resources>

 

 

  8. values/colors.xml

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="gen_app_color">#40ffe6</color>
    <color name="selector_buttons_text">#ff404a</color>
</resources>

 

 

Posted by 농부지기
,