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

简介: 代码如下

1.去掉APP顶部标题栏

(1)打开 res -> values -> styles;

2345_image_file_copy_36.jpg

(2)修改 DarkActionBar 为 NoActionBar。

默认AppTheme:

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

修改后的AppTheme:

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

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

效果图如下,

2345_image_file_copy_37.jpg


首先最简单的两个动画,写在了XML里面,当然也可以写到java中,

第一个in_animation.xml,第二个out_animation.xml,

第一步:Android里面已经有了TextSwitcher这个类,我们继承这个类,实现ViewSwitcher.ViewFactory提供的创建TextView的方法即可;

第二步:为了实现轮播,当然是每隔一个时间段就播放一次的效果,我们可以使用Timer定时器,每隔几秒发送一个Message给Handler,handler接受到消息开始更新文字。

3.Android TextView字体设置

2345_image_file_copy_38.jpg

核心代码

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

通过这种方式改变字体,会占用应用内存,因此一般不推荐使用这种方式,通过下图可以看到,实际上TextView本身自带有几种字体。

2345_image_file_copy_39.jpg

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

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

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

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

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

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

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

<ImageView android:id="@+id/test_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:layout_gravity="center"
android:contentDescription="@string/app_name"
android:src="@drawable/ic_launcher" />

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

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

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

第一步,注册百度账号,在百度地图开放平台新建应用、生成API_KEY;

第二步,下载sdk;

第三步,建立Android Studio工程,配置环境;

第四步,将BaiduLBS_Android.jar加入环境变量(右键,Add As Library),并在app的build.gradle中的android中添加;

第五步,在AndroidManifest.xml文件中声明权限,并在application标签中添加内容;

第六步,测试代码,获取定位信息。

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

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

如下,

android:focusable="true"
android:focusableInTouchMode="true"

添加后的实例如下,

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:focusableInTouchMode="true">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:gravity="top"
        android:imeOptions="actionDone"
        android:inputType="text"
        android:padding="4dp"
        android:text="测试文本内容"
        android:textSize="16sp" />
</RelativeLayout>

8.自定义美观的SeekBar

SeekBar有两个属性progressDrawable和thumb,可以用来定义进度条和滑动块的样式,可自定义.xml文件来达到自己想要的美观效果,具体可参考

https://blog.csdn.net/sunbinkang/article/details/78999003https://blog.csdn.net/qq_43377749/article/details/84841008

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

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

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

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

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

注意,上面三种方法只在ClipData对象中创建了一个ClipData.Item对象,如果想向ClipData对象中添加多个Item应该通过ClipData对象的addItem()方法添加。

(3)将ClipData数据复制到剪贴板:

ClipboardManager.setPrimaryClip(ClipData对象);

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

ClipboardManager.getPrimaryClip();

例子如下,

public class MainActivity extends Activity implements OnClickListener {
    private EditText copy_edt, paste_edt;
    private Button copy_btn, paste_btn;
    //剪切板管理工具类
    private ClipboardManager mClipboardManager;
    //剪切板Data对象
    private ClipData mClipData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        initViews();
        initListeners();
    }
    private void initViews() {
        this.copy_btn = (Button) findViewById(R.id.copy_btn);
        this.paste_btn = (Button) findViewById(R.id.paste_btn);
        this.copy_edt = (EditText) findViewById(R.id.copy_edt);
        this.paste_edt = (EditText) findViewById(R.id.paste_edt);
    }
    private void initListeners() {
        this.copy_btn.setOnClickListener(this);
        this.paste_btn.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        String copy = copy_edt.getText().toString().trim();
        switch (v.getId()) {
        case R.id.copy_btn:
            if (TextUtils.isEmpty(copy)) {
                Toast.makeText(getApplicationContext(), "请输入内容!",
                        Toast.LENGTH_SHORT).show();
                return;
            }
            //创建一个新的文本clip对象
            mClipData = ClipData.newPlainText("Simple test", copy);
            //把clip对象放在剪贴板中
            mClipboardManager.setPrimaryClip(mClipData);
            Toast.makeText(getApplicationContext(), "文本已经复制成功!",
                    Toast.LENGTH_SHORT).show();
            break;
        case R.id.paste_btn:
            //GET贴板是否有内容
            mClipData = mClipboardManager.getPrimaryClip();
            //获取到内容
            ClipData.Item item = mClipData.getItemAt(0);
            String text = item.getText().toString();
            paste_edt.setText(text);
            Toast.makeText(getApplicationContext(), "粘贴成功!s",
                    Toast.LENGTH_SHORT).show();
            break;
        }
    }
}

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

AlertDialog自带3个按钮PositiveButton、NegativeButton、NeutralButton,可以调用setPositiveButton、setNegativeButton、setNeutralButton三个方法来设置监听器,示例如下:
Dialog dialog = new AlertDialog.Builder(this).setIcon(
     android.R.drawable.btn_star).setTitle("喜好调查").setMessage("你喜欢李连杰的电影吗?")
     .setPositiveButton("很喜欢",new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
           // TODO Auto-generated method stub
           Toast.makeText(Main.this, "我很喜欢他的电影。",Toast.LENGTH_LONG).show();
        }
     })
     .setNegativeButton("不喜欢", new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
         // TODO Auto-generated method stub
         Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG).show();
      }
   })
   .setNeutralButton("一般", new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {  
         // TODO Auto-generated method stub 
         Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG).show();
    }
   }).create();
   dialog.show();

效果如图,

2345_image_file_copy_40.jpg

相关文章
|
4天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
5天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
7天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
5天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
6天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
18 2
|
7天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
14天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
28 5
|
12天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
14天前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
33 3
|
11天前
|
移动开发 Java Android开发
探索Android与iOS开发的差异性与互联性
【10月更文挑战第32天】在移动开发的大潮中,Android和iOS两大平台各领风骚。本文将深入浅出地探讨这两个平台的开发差异,并通过实际代码示例,展示如何在各自平台上实现相似的功能。我们将从开发环境、编程语言、用户界面设计、性能优化等多个角度进行对比分析,旨在为开发者提供跨平台开发的实用指南。
33 0