转载:http://blog.csdn.net/u010850027/article/details/48009461
经常玩儿App的小伙伴都知道,APP上面有很多按钮都是圆角的,圆形给人感觉饱满,富有张力,不知道设计圆角按钮的小伙伴是不是和小编有着相同的想法`(*∩_∩*)′,听小编公司开发IOS的小伙伴说,他们里面直接有圆角的button,但是对于开发Android的小伙伴就不一样了,里面没有直接的圆角button可以供我们使用,在xml里面布局一个button,还不是圆角的,怎么办nie,方法总比困难多,我们成长的机会又来了,最近在小编的项目中,需要用到圆角的button,还需要用到圆角的头像,经过半天捣鼓,终于是圆角的啦,开心ing,效果图如下,但是效果图展示的用户中心是一张图片,不是用imageview。今天这篇博文,小编就来简单的介绍一下如何敲出圆角的Button以及圆角的头像,小编先来介绍如何敲出圆角的头像,效果图如下所示:
今天这篇博文,小编做了一个关于如何制作圆角的一个Android小demo,希望可以帮助到有需要的小伙伴,首先,新建一个Android项目,在drawable_xhdpi这个文件下面,新建一个Android xml文件,取名为fillet,如下图所示:
接着第二步,我们开始编写fillet里面的xml,代码如下所示:
- <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
- <shape
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle">
- <!-- 填充的颜色 -->
- <solid android:color="#4392F9" />
- <!-- 设置按钮的四个角为弧形 -->
- <!-- android:radius 弧形的半径 -->
- <corners android:radius="5dip" />
- <!-- padding:Button里面的文字与Button边界的间隔 -->
- <padding
- android:left="10dp"
- android:top="10dp"
- android:right="10dp"
- android:bottom="10dp" />
- </shape> </span>
第三步,编写layout里面的文件activity_main.xml,代码如下所示:
- <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <!--等一个故事的布局,写着玩儿的`(*∩_∩*)′ -->
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="等一个故事"/>
- <!-- 圆角button的布局 -->
- <Button
- android:id="@+id/filletButton"
- android:layout_gravity="center"
- android:text="圆角按钮 "
- android:textColor="#FFFFFF"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/fillet"/>
- </LinearLayout> </span>
第四步,编写values文件下styles.xml的内容,具体代码如下所示:
- <span style="font-size:18px;"><resources>
- <!--
- Base application theme, dependent on API level. This theme is replaced
- by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
- -->
- <style name="AppBaseTheme" parent="android:Theme.Light">
- <!--
- Theme customizations available in newer API levels can go in
- res/values-vXX/styles.xml, while customizations related to
- backward-compatibility can go here.
- -->
- </style>
- <!-- Application theme. -->
- <style name="AppTheme" parent="AppBaseTheme">
- <!-- All customizations that are NOT specific to a particular API-level can go here. -->
- </style>
- <string name="action_settings">Settings</string>
- </resources>
- </span>
第五步,编写FillButtonActivity.java类里面的内容,代码如下所示:
- <span style="font-size:18px;">package com.example.filletbutton;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Toast;
- public class FilletButtonActivity extends Activity {
- Button FilletButton;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- FilletButton=(Button)findViewById(R.id.filletButton);
- //使用匿名类注册Button事件
- FilletButton.setOnClickListener(new OnClickListener()
- {
- public void onClick(View v)
- {
- Toast.makeText(FilletButtonActivity.this, "你点击了圆角按钮",Toast.LENGTH_LONG).show();
- }
- });
- }
- }
- </span>
最后我们来看一下运行的效果,如下图所示:
介绍完如何敲出圆角的Button之后,小编接着像小伙伴们介绍一下,如何敲出圆角的头像,首先,第一步,我们来编写xml里面的布局代码,具体代码如下所示:
- <span style="font-size:18px;"><?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:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context=".TestActivity">
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="135dp"
- android:background="@drawable/us">
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="44dp">
- <ImageButton
- android:id="@+id/about_us_back"
- android:layout_width="14dp"
- android:layout_height="25.5dp"
- android:layout_gravity="center_vertical"
- android:layout_marginLeft="10dp"
- android:background="@drawable/back" />
- <!-- 关于我们的布局 -->
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:text="关于我们"
- android:textColor="#fff"
- android:textSize="19sp" />
- </FrameLayout>
- <ImageView
- android:id="@+id/imageView2"
- android:layout_width="70dp"
- android:layout_height="70dp"
- android:layout_marginTop="8dp"
- android:layout_gravity="center"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:src="@drawable/my" />
- <!-- 用户昵称,无忧心情的布局 -->
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center_horizontal|bottom"
- android:layout_marginBottom="5dp"
- android:textColor="#FFFFFF"
- android:text="无忧心情" />
- </FrameLayout>
- </LinearLayout>
- </span>
- <span style="font-size:18px;">package com.h8.imageroundcorner;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Canvas;
- import android.graphics.Paint;
- import android.graphics.PorterDuffXfermode;
- import android.graphics.Rect;
- import android.graphics.RectF;
- import android.graphics.Bitmap.Config;
- import android.graphics.PorterDuff.Mode;
- import android.os.Bundle;
- import android.widget.ImageView;
- public class TestActivity extends Activity {
- ImageView imageView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.test);
- imageView = (ImageView) findViewById(R.id.imageView2);
- Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.my);
- imageView.setImageBitmap(toRoundCorner(b,100));
- }
- public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
- 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 = pixels;
- 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;
- }
- }
- </span>