A. 如何自定义android Dialog的样式
如何自定义Android Dialog的样式? Android 中自定义Dialog的样式,主要是通过自定义的xml,然后载入到dialog的背景中,如下步骤:
1、自定义Dialog
final Dialog dialog = new Dialog(this, R.style.Theme_dialog);
2、窗口布局
View contentView = LayoutInflater.from(this).inflate(R.layout.select_list_dialog,null);
3、把设定好的窗口布局放到dialog中
dialog.setContentView(contentView);
4、设定点选视窗空白处取消会话
dialog.setCanceledOnTouchOutside(true);
5、具体的操作
ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);
6、展示视窗
dialog.show();例:final Dialog dialog = new Dialog(this,R.style.Theme_dialog);View contentView =LayoutInflater.from(this).inflate(R.layout.select_list_dialog, null);dialog.setContentView(contentView);dialog.setCanceledOnTouchOutside(true);ListView msgView = (ListView)contentView.findViewById(R.id.listview_flow_list);TextView titleText = (TextView)contentView.findViewById(R.id.title);titleText.setText("请选择银行卡");SelectBankCardDialogAdapter adapter =new SelectBankCardDialogAdapter(this, mBankcardList);msgView.setAdapter(adapter);msgView.setOnItemClickListener(newOnItemClickListener() {@Overridepublic void onItemClick(AdapterViewparent, View view, int position, long id) {Toast.makeText(RechargeFlowToMobileActivity.this, position+"",0).show();mSelectCard =mBankcardList.get(position);String area = mSelectCard.getBank_card();mCardNumberText.setText(area);dialog.di *** iss();}});Button closeBtn = (Button)contentView.findViewById(R.id.close);closeBtn.setClickable(true);closeBtn.setOnClickListener(newView.OnClickListener() {@Overridepublic void onClick(View v) {dialog.di *** iss();}});dialog.show();
以上就是在Android开发自定义dialog样式的方法和步骤,android很多的控制元件都提供了接口或者方法进行样式的定义和修改。
如何自定义android Button样式
返回部落格列表
转 android自定义button样式
sumpower
释出时间: 2014/02/25 19:56
阅读: 4162
收藏: 0
点赞: 0
评论: 0
摘要
android自定义button样式
在Android开发应用中,预设的Button是由系统渲染和管理大小的。而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的。因此,我们在开发产品的时候,需要对预设按钮进行美化。在本篇里,笔者结合在应用开发中的经验,探讨一下自定义背景的按钮、自定义形状按钮的实现方法。
首先看实现效果截图:
自定义背景的按钮目前有2种方式实现,向量和点阵图。
1. 向量图形绘制的方式
向量图形绘制的方式实现简单,适合对于按钮形状和图案要求不高的场合。步骤如下:
(a) 使用xml定义一个圆角矩形,外围轮廓线实线、内填充渐变色,xml程式码如下。
view plain
bg_alibuybutton_default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="地址">
<item>
<shape android:shape="rectangle">
<solid android:color="#FFEC7600" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
<item android:="1px" android:bottom="1px" android:left="1px" android:right="1px">
<shape>
<gradient
android:startColor="#FFEC7600" android:endColor="#FFFED69E"
android:type="linear" android:angle="90"
android:centerX="0.5" android:centerY="0.5" />
<corners
android:LeftRadius="5dip"
android:RightRadius="5dip"
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip" />
</shape>
</item>
</layer-list>
同样定义bg_alibuybutton_pressed.xml和bg_alibuybutton_selected.xml,内容相同,就是渐变颜色不同,用于按钮按下后的背景变化效果。
(b) 定义按钮按下后的效果变化描述档案drawable/bg_alibuybutton.xml,程式码如下。
view plain
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="地址">
<item android:state_pressed="true"
android:drawable="@drawable/bg_alibuybutton_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/bg_alibuybutton_selected" />
<item android:drawable="@drawable/bg_alibuybutton_default" />
</selector>
(c) 在你需要的接口定义档案中,如layout/main.xml中定义一个Button控制元件。
view plain
<Button
android:layout_width="120dip"
android:layout_height="40dip"
android:text="向量背景按钮" android:background="@drawable/bg_alibuybutton" />
这样,自定义背景的按钮就可以使用了,在实现onClick方法后就可以响应操作。
android自带的样式比较难看,如何能够自定义按钮的样式,使其显示的跟美工设计的效果一样,现与大家分享下
在layout中新增2个按钮,从下图中可以看出在按钮中呼叫了style和android:background属性,这两个属性一个是自定义样式,一个是给按钮新增背景图片
展开res目录,可以看到在values目录下有styles.xml档案,该档案用于自定义样式,双击开启
标注的是我自定义的样式,name为BtnStyle,当按钮呼叫自定义样式的时候访问这个name
在button中呼叫自定义样式的方法,比较简单
如何往按钮中新增自定义图片,使按钮看起来更漂亮些,因不同手机分辨率不同,那必然牵扯到图片的拉伸,在android系统下有个很好的技术“九宫格“,可以对图片进行处理,只对区域性进行拉伸,给工具目录储存在android\sdk\tools\draw9patch.bat,经过该工具处理的图片以.9.png结尾,放到drawable资料夹中
在Button中通过android:background属性载入图片的方法,至此我们自定义的按钮样式也就完成了,当然这只是个引子,在具体的专案工程中实现的效果要比这个demo复杂很多,有好的设计思路欢迎交流。
B. android中如何美化发送短信息的程序界面。
1.跟开发WEB程序一样,先做出UI界面,因为这里我们是要实其功能,界面不作过多的美化。代码如下:
Activity_main.xml
<TextView
android:id="@+id/tv_input_number" //这个是提示用户输入电话号码的TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/please_input_number"
android:textSize="20px" />
<EditText
android:id="@+id/et_number" //这个是输入电话号码的文本框
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_input_number"
android:ems="10"
android:inputType="phone" >
</EditText>
<TextView
android:id="@+id/tv_input_content" //提示输入内容的文本
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/et_number"
android:layout_below="@+id/et_number"
android:text="@string/please_input_content"
android:textSize="20px"
android:textColor="#333333"
/>
<EditText
android:id="@+id/et_content" //这是输入文本内容的文本编辑器
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_input_content"
android:singleLine="true"
android:lines="5"
android:inputType="textMultiLine" />
<Button
android:id="@+id/bt_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/et_content"
android:layout_below="@+id/et_content"
android:layout_marginTop="17dp"
android:height="30px"
android:text="@string/send"
android:textColor="#ff3333"
android:textSize="20px" />
</RelativeLayout>
备注:要注意创建相应该元件的ID号。
2.开始实功能代码.在MainAcivity.java文件中加入以下代码:
MainAcivity.java
public class MainActivity extends ActionBarActivity implements OnClickListener {
private EditText et_number;
private EditText et_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.et_number);
et_content= (EditText) findViewById(R.id.et_content);
Button bt_send=(Button) findViewById(R.id.bt_send);
bt_send.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_send:
String number=et_number.getText().toString().trim();
String content=et_content.getText().toString().trim();
if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){
Toast.makeText(this, "手机号和内容不能为空", Toast.LENGTH_LONG).show();
return;
}else{
SmsManager smsManger=SmsManager.getDefault();
ArrayList<String> contents=smsManger.divideMessage(content);
for(String str:contents){
smsManger.sendTextMessage(number, null, str, null, null);
}
}
break;
default:
break;
} }}
C. 这8款Android桌面小部件,能让你的Android好用很多倍
安卓手机一直以来以其可玩性高而受到欢迎,即使是简单的桌面小部件,也有人能玩出花来。强大如 Zooper Widget 和 KWGT 等复杂且定制性极强的美化类桌面插件应用,抑或是朴实无华但又必不可少的时间和天气小部件,桌面小部件实实在在地占据着每一部安卓手机桌面的一部分。
手机毕竟是拿来用的,对于大部人来说,是否实用、美观和方便才是考量一个小部件能否在桌面上生存的必要条件。本文就旨在介绍一些值得我们放置在桌面的应用小部件。
这些小部件更实用
Another Widget
自 Pixel Launcher 推出以后,简洁实用的 At A Glance 桌面插件便成为了诸多安卓用户心头的一颗朱砂痣,奈何高贵的 Pixel 用户专属这一限制使得我等只得望洋兴叹。好在,万能的 XDA 大神们动手破除了 Pixel Launcher 的诸多限制,使得更多人得以享用这一特性。但是面对更改图标困难、界面相对简陋的 Pixel Launcher ,广大人民群众日益增长的对于高自定义的需求和现有的不足之间的矛盾日益凸显。 Another Widget 的出现便很好地解决了这一矛盾:
Another Widget 的设置界面
Another Widget 是一款像素级模仿 At A Glance 这一特性的桌面小部件,对比 At A Glance ,它还有如下优点:支持更换字体颜色,可自定义显示的日历,设置即将到来的事件最早何时可以显示在桌面,还可以切换天气源。
显示效果
Google Calender 的日程列表
Google Calendar 的小部件有两种,一种为月视图,另一种为日程列表。相比于月视图,将日程列表放置在桌面更能帮助我们了解接下来的日程,起到良好的提醒作用。
Google Calender 日程列表
倒计时类
每个人的人生中总有些特殊而重要的时刻值得我们铭记和回顾,这个时候,把它们放置在桌面就显得很有必要。放置重要考试的倒计时能让我们每次看到桌面都“胆战心惊”,提醒我们滚去学习;同样也可以放置亲人或男/女朋友的生日倒计时乃至你们共同度过了多久的甜蜜岁月。万一被男/女朋友“不小心”看到没准还会被夸很有心。
我们可以使用“何时”、“倒数日”、“Hurry”等应用来添加倒计时小部件到桌面。
单事件效果对比
帮你更快地触发所需功能的小部件
iOS 于 2015 年宣布了 3D Touch 这一特性,旨在提高手机操作效率,帮助用户更快地从桌面进入所需功能。一年后,谷歌也推出了 Shortcuts 这一特性,其一度被看作是安卓版的 3D Touch 功能。不过不同于 3D Touch 对于手机硬件的硬性需要, Shortcuts 则只需要系统(Android 7.1 及以上)和应用支持,门槛低上了不少(安装 Nova Launcher 等第三方桌面更是可以让低安卓版本也享受这一特性)。
App Shortcuts
事实上,无论是 3D Touch 还是 App Shortcuts ,用户的实际利用率一直不高,一是因为每个应用长按调出的菜单功能不一样,记忆难度大;二是因为用户难以形成习惯。更不必说,许多国产定制 UI 直接阉割掉了这一功能。当然,我们还是可以尽可能地把这一特性利用起来,使之服务于我们。谷歌允许用户将 Shortcuts 中的某一项通过拖拽固定在桌面,这为用户提供了不少方便。那么哪些快捷方式值得我们单独将其放置在寸土寸金的桌面上呢?
支付宝“扫一扫”和“付款码”等小部件
移动支付的燎原之火早已烧遍全国,连门口卖鸡蛋灌饼的大爷都知道让你扫他的红包码了。扫码已经变成了手机摄像头所承担的重要功能之一,把“扫一扫”的小部件放在桌面,我们便无需再靠着一指禅点点点,只需一步,就能潇洒地付款走人。同样,“付款码”小部件放置在桌面也能在一定程度上减少操作。每次在超市排队的时候,看到大爷大妈们手忙脚乱地找付款码,都不禁感叹,所谓的科技进步带来的便捷究竟何时才能被所有人共享。
支付宝扫一扫
在这里不得不批评一下“生活方式应用”某信了,时至今日安卓版的微信也不支持 Shortcuts ,落后支付宝不是一点半点,是半年啊。想要快速打开微信扫一扫或者付款码我们只能等待官方支持了,当然了,MIUI 等国产系统的负一屏支持快速打开这些活动。对于原生或类原生系统的用户来说,现有方式均需要获取 root 权限,考虑到安全性,在此不做推荐。
虾米的“每日播放 30 首”和网易云的“私人 FM”
如果只是想要听歌,为了躲开漫长的开屏广告,我们可以把相应的快捷方式放置于桌面。这样只需一键便可开始畅享音乐。
通过常规方式打开:
常规方式打开
通过快捷方式打开:
快捷方式打开
同样实用的还有一闪的“相机”快捷方式,手机默认设置的“电池使用情况”快捷方式,适合更新强迫症的 Play Store 的“我的应用”快捷方式等等。我们可以根据自己使用某一功能的频率来决定是否需要放置相应的小部件,对于一些使用率不高的功能,我们通过长按图标调出即可。
值得一试的快捷方式
为了好玩,没卵用也要放的小部件
有些时候,为了好玩和个性,许多人会花费大量时间来美化桌面。这种行为我认为属于个人的爱好,尊重即可。不过,如果你只是想要小小地折腾一下,这里也推荐一款好玩的应用:会话微件。
会话微件支持在桌面放置“对话”、“单句”和“卡片”,甚至支持和同样使用这一应用的人在桌面上“聊天”。我们可以利用会话微件放置自己喜欢的歌词或名言,还能够查看天气甚至查询物流情况,根据会话微件的教程,我们能够做出各种效果的桌面小部件。具体实用与否还要由你来定夺。