블로그 이미지
흰색앵초

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Notice

'안드로이드'에 해당되는 글 2

  1. 2014.10.17 Bitmap 테두리 라운드처리하기
  2. 2014.09.29 다른클래스에서 액티비티 컨트롤하기
2014. 10. 17. 11:50 프로그래밍/Android

이번 포스팅에서는 이미지를 Bitmap으로 만든 후 테두리를 라운드처리하는 방법을 알아보겠습니다.
소스를 보시면....


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.BitmapFactory;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

	LinearLayout linearLayout1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		linearLayout1 = (LinearLayout) findViewById(R.id.LinearLayout1);
		
		ImageView iv1 = new ImageView(getApplicationContext());
		
		Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.img1);
		Bitmap bm2 = getRoundedCornerBitmap(bm1);

		iv1.setImageBitmap(bm2);
		linearLayout1.addView(iv1);
		
	}
	
	public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
	    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
	        bitmap.getHeight(), Config.ARGB_8888);
	    Canvas canvas = new Canvas(output);
	 
	    final int color = 0xff424242;
	    final Paint paint = new Paint();
	    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
	    final RectF rectF = new RectF(rect);
	    final float roundPx = 50; // 테두리 곡률 설정
	 
	    paint.setAntiAlias(true);
	    canvas.drawARGB(0, 0, 0, 0);
	    paint.setColor(color);
	    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
	 
	    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
	    canvas.drawBitmap(bitmap, rect, rect, paint);
	 
	    return output;
	  }
	
	
}

소스는 BitmapFactory를 이용해서 이미지를 Bitmap화 한다음 아래의 getRoundedCornerBitmap을 이용해서 테두리를 라운딩 처리해주는 방식으로 처리되어있습니다. 라운드 처리한 Bitmap을 다시 ImageView에 적용해서 레이아웃에 추가해 보여주는 식의 간단한 예제입니다. 혹시나 필요하신 분이 있으면 도움이 되셨기를 바랍니다. 슝~

참조 : Rounded corner bitmaps on Android

비슷한 포스팅 : ImgaeView 테두리 라운드처리

posted by 흰색앵초
2014. 9. 29. 19:39 프로그래밍/Android
가끔 액티비티가 아닌 다른 클래스에서 액티비티를 컨트롤 하고 싶을 때가 있습니다. 그럴땐 아래와 같은식으로 처리해주시면 됩니다.

MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	Button button1, button2;
	TextView textView1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		textView1 = (TextView) findViewById(R.id.textView1);
		
		ClickAdapter clickAdapter = new ClickAdapter(this);
		
		button1.setOnClickListener(clickAdapter);
		button2.setOnClickListener(clickAdapter);
		
	}

}

위와 같이 다른 클래스로 Context를 넘기시면 되구요.

ClickAdapter.java
import android.content.Context;
import android.view.View;

public class ClickAdapter implements View.OnClickListener{
	
	Context mContext;
	
	public ClickAdapter(Context context){
		mContext = context;
	}
	
	@Override
	public void onClick(View v) {
		switch(v.getId()){
		
		case R.id.button1:
			this.showText();
			break;
		
		case R.id.button2:
			this.hideText();
			break;
		}
		
	}

	private void hideText() {
		((MainActivity) mContext).textView1.setVisibility(View.INVISIBLE);
	}

	private void showText() {
		((MainActivity) mContext).textView1.setVisibility(View.VISIBLE);
		
	}

}

액티비티를 컨트롤하는 클래스에서 생성자에서 Context를 받은 뒤 위의 코드와 같이 처리해주시면 됩니다. 혹시나 궁금하신 분이 있을까 해서 정리겸 올립니다.

posted by 흰색앵초
prev 1 next