Android开发 经验技巧汇总(基于Android Studio)(一)

1.去掉APP顶部标题栏

(1)打开 res -> values -> styles; 打开style (2)修改 DarkActionBar 为 NoActionBar。

默认AppTheme:

1<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

修改后的AppTheme:

1<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

2.TextView实现文字自动轮播实现

效果图如下, 在这里插入图片描述 首先最简单的两个动画,写在了XML里面,当然也可以写到java中, 第一个in_animation.xml,第二个out_animation.xml, 第一步:Android里面已经有了TextSwitcher这个类,我们继承这个类,实现ViewSwitcher.ViewFactory提供的创建TextView的方法即可; 第二步:为了实现轮播,当然是每隔一个时间段就播放一次的效果,我们可以使用Timer定时器,每隔几秒发送一个Message给Handler,handler接受到消息开始更新文字。 具体参考https://blog.csdn.net/cpcpcp123/article/details/82049660,讲解较详细。

3.Android TextView字体设置

在这里插入图片描述 核心代码

1Typeface mtypeface=Typeface.createFromAsset(getAssets(),"huawencaiyunv.TTF"); 2mTextViewContent.setTypeface(mtypeface);

通过这种方式改变字体,会占用应用内存,因此一般不推荐使用这种方式,通过下图可以看到,实际上TextView本身自带有几种字体。 在这里插入图片描述 具体可参考https://blog.csdn.net/mp624183768/article/details/79044063

4.设置TextView文字内容大小颜色

(1)第一种方法在activity_main.xml李设置,Java文件不用改:

1android:text="文字" 2android:textSize="字体大小" 3android:textColor="颜色"

(2)第二种方法,在MainActivity.java文件里设置,xml不用改:

1text.setText("欲穷千里目,更上一层楼");//设置文字内容 2text.setTextColor(Color.parseColor("#ff5e9cff"));//设置颜色 3text.setTextSize(30);;//设置字体大小

5.ImageView 宽度设定,高度自适应

首先,需要给你的ImageView布局加上android:adjustViewBounds="true"

1<ImageView android:id="@+id/test_image" 2android:layout_width="wrap_content" 3android:layout_height="wrap_content" 4android:scaleType="fitXY" 5android:adjustViewBounds="true" 6android:layout_gravity="center" 7android:contentDescription="@string/app_name" 8android:src="@drawable/ic_launcher" />

然后,在代码里设置ImageView.最大宽度和最大高度,因为adjustViewBounds属性只有在设置了最大高度和最大宽度后才会起作用

1int screenWidth = getScreenWidth(this); 2ViewGroup.LayoutParams lp = testImage.getLayoutParams(); 3lp.width = screenWidth; 4lp.height = LayoutParams.WRAP_CONTENT; 5testImage.setLayoutParams(lp); 6testImage.setMaxWidth(screenWidth); 7testImage.setMaxHeight(screenWidth * 5); //这里其实可以根据需求而定,我这里测试为最大宽度的5倍

具体可参考https://www.cnblogs.com/bcbr/articles/4268276.html

6.使用百度地图SDK获取定位信息

第一步,注册百度账号,在百度地图开放平台新建应用、生成API_KEY; 第二步,下载sdk; 第三步,建立Android Studio工程,配置环境; 第四步,将BaiduLBS_Android.jar加入环境变量(右键,Add As Library),并在app的build.gradle中的android中添加; 第五步,在AndroidManifest.xml文件中声明权限,并在application标签中添加内容; 第六步,测试代码,获取定位信息。 具体过程可参考https://www.jb51.net/article/105089.htm

7.Android设置EditText默认取消焦点

在EditText的父控件中,添加两个属性即可, 如下,

1android:focusable="true" 2android:focusableInTouchMode="true"

添加后的实例如下,

1<RelativeLayout 2 android:layout_width="match_parent" 3 android:layout_height="wrap_content" 4 android:focusable="true" 5 android:focusableInTouchMode="true"> 6 <EditText 7 android:layout_width="match_parent" 8 android:layout_height="80dp" 9 android:gravity="top" 10 android:imeOptions="actionDone" 11 android:inputType="text" 12 android:padding="4dp" 13 android:text="测试文本内容" 14 android:textSize="16sp" /> 15</RelativeLayout>

可参考https://www.jianshu.com/p/83e816600667

8.自定义美观的SeekBar

SeekBar有两个属性progressDrawable和thumb,可以用来定义进度条和滑动块的样式,可自定义.xml文件来达到自己想要的美观效果,具体可参考 https://blog.csdn.net/sunbinkang/article/details/78999003https://blog.csdn.net/qq_43377749/article/details/84841008

9.复制文本内容到系统剪贴板

(1)获取剪贴板管理器:

1ClipboardManager mClipboardManager =(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);

(2)创建能够存入剪贴板的ClipData对象(ClipData对象中包含一个或多个ClipData.Item对象):

1//创建普通字符型ClipData,‘Label’这是任意文字标签 2ClipData mClipData =ClipData.newPlainText("Label", "Content"); 3// 创建URL型ClipData: 4ClipData.newRawUri("Label",Uri.parse("http://www.baidu.com")); 5//创建Intent型ClipData: 6ClipData.newIntent("Label", intent);

注意,上面三种方法只在ClipData对象中创建了一个ClipData.Item对象,如果想向ClipData对象中添加多个Item应该通过ClipData对象的addItem()方法添加。 (3)将ClipData数据复制到剪贴板:

1ClipboardManager.setPrimaryClip(ClipData对象);

(4)从剪贴板中获取ClipData数据:

1ClipboardManager.getPrimaryClip();

例子如下,

1public class MainActivity extends Activity implements OnClickListener { 2 private EditText copy_edt, paste_edt; 3 private Button copy_btn, paste_btn; 4 //剪切板管理工具类 5 private ClipboardManager mClipboardManager; 6 //剪切板Data对象 7 private ClipData mClipData; 8 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 setContentView(R.layout.activity_main); 13 mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 14 initViews(); 15 initListeners(); 16 } 17 18 private void initViews() { 19 this.copy_btn = (Button) findViewById(R.id.copy_btn); 20 this.paste_btn = (Button) findViewById(R.id.paste_btn); 21 this.copy_edt = (EditText) findViewById(R.id.copy_edt); 22 this.paste_edt = (EditText) findViewById(R.id.paste_edt); 23 } 24 25 private void initListeners() { 26 this.copy_btn.setOnClickListener(this); 27 this.paste_btn.setOnClickListener(this); 28 } 29 30 @Override 31 public void onClick(View v) { 32 String copy = copy_edt.getText().toString().trim(); 33 switch (v.getId()) { 34 case R.id.copy_btn: 35 if (TextUtils.isEmpty(copy)) { 36 Toast.makeText(getApplicationContext(), "请输入内容!", 37 Toast.LENGTH_SHORT).show(); 38 return; 39 } 40 //创建一个新的文本clip对象 41 mClipData = ClipData.newPlainText("Simple test", copy); 42 //把clip对象放在剪贴板中 43 mClipboardManager.setPrimaryClip(mClipData); 44 Toast.makeText(getApplicationContext(), "文本已经复制成功!", 45 Toast.LENGTH_SHORT).show(); 46 break; 47 case R.id.paste_btn: 48 //GET贴板是否有内容 49 mClipData = mClipboardManager.getPrimaryClip(); 50 //获取到内容 51 ClipData.Item item = mClipData.getItemAt(0); 52 String text = item.getText().toString(); 53 paste_edt.setText(text); 54 Toast.makeText(getApplicationContext(), "粘贴成功!s", 55 Toast.LENGTH_SHORT).show(); 56 break; 57 } 58 } 59} 60

可参考https://blog.csdn.net/true100/article/details/51123599https://blog.csdn.net/qq_22078107/article/details/53447905

10.创建带3个按钮的对话框

1AlertDialog自带3个按钮PositiveButtonNegativeButtonNeutralButton,可以调用setPositiveButton、setNegativeButton、setNeutralButton三个方法来设置监听器,示例如下: 2Dialog dialog = new AlertDialog.Builder(this).setIcon( 3 4 android.R.drawable.btn_star).setTitle("喜好调查").setMessage("你喜欢李连杰的电影吗?") 5 .setPositiveButton("很喜欢",new OnClickListener() { 6 @Override 7 public void onClick(DialogInterface dialog, int which) { 8 // TODO Auto-generated method stub 9 Toast.makeText(Main.this, "我很喜欢他的电影。",Toast.LENGTH_LONG).show(); 10 } 11 }) 12 .setNegativeButton("不喜欢", new OnClickListener() { 13 @Override 14 public void onClick(DialogInterface dialog, int which) { 15 // TODO Auto-generated method stub 16 Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG).show(); 17 } 18 }) 19 .setNeutralButton("一般", new OnClickListener() { 20 @Override 21 public void onClick(DialogInterface dialog, int which) { 22 // TODO Auto-generated method stub 23 Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG).show(); 24 } 25 }).create(); 26 dialog.show();

效果如图, 在这里插入图片描述

本文原文首发来自博客专栏移动应用开发,由本人转发至https://www.helloworld.net/p/dxXhj9sJni51,其他平台均属侵权,可点击https://blog.csdn.net/CUFEECR/article/details/103341336查看原文,也可点击https://blog.csdn.net/CUFEECR浏览更多优质原创内容。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )