‘壹’ 安卓开发如何添加开源框架到自己的项目中
是android library吗,那就直接右键项目,选择properties,然后到Android页面,在右边的Library里面点add,选中项目导入。
‘贰’ 如何在Mac系统中创建Android应用项目
我们经常会用Mac系统创建IOS应用项目,但是如何在Mac系统中创建Android应用项目呢?下面我给大家分享一下。
Android Studio
首先我们在Mac系统中要安装Android Studio软件,然后点击Start a new Android Studio project选项,如下图所示
接下来进入项目名称设置界面,这里需要给项目起一个名字,如下图所示
然后需要我们选择一下创建的Android应用运用哪个SDK,如下图所示,我建议选择比较稳定的版本
接下来会进入主界面样式选择界面,我们选择空模板样式即可,如下图所示
接着给主界面文件起名字,这里默认是MainActivity,我们不需要设置,默认即可,如下图所示
设置完以上信息以后,我们就可以看到Android Studio就会进入项目创建进度了,如下图所示
接下来创建好项目以后,默认主界面就会显示项目列表,如下图所示
如果想运行项目的话我们点击顶部的运行按钮即可,如下图所示
最后Android Studio就会启动Android手机模拟器来展示我们项目的信息了,如下图所示
‘叁’ 在Android项目中,怎样添加recyclerview库
1.添加RecyclerView Android依赖项
要将RecyclerView Selection库添加到Android Studio项目,请implementation 在app 模块的build.gradle 文件中提及以下依赖项:
1.implementation 'com.android.support:recyclerview-v7:28.0.0'
2.implementation 'com.android.support:recyclerview-selection:28.0.0'
2.创建一个列表
在本教程中,我们将使用一小部分项目,每个项目都包含一个人的姓名和电话号码。
要存储每个列表项的数据,请创建一个名为的Kotlin数据类,Person并为其添加两个属性:name 和phone。
1.data class Person(val name:String,
2. val phone: String)
您现在可以继续Person 在主活动中创建对象列表。
val myList = listOf(
Person("Alice", "555-0111"),
Person("Bob", "555-0119"),
Person("Carol", "555-0141"),
Person("Dan", "555-0155"),
Person("Eric", "555-0180"),
Person("Craig", "555-0145")
)
3.将Recycler视图添加到布局
当然,我们将使用RecyclerView 小部件来显示列表。因此
,在主活动的布局XML文件中添加 标记。
要指定列表项的布局,请创建一个新的XML文件并将其命名为list_item.xml。在其中,添加两个TextView 小部件:一个用于显示名称,另一个用于显示电话号码。如果使用LinearLayout 元素来定位窗口小部件,则XML文件的内容应如下所示:
4.创建一个View Holder
您可以将视图持有者视为一个对象,其中包含对列表项布局中存在的视图的引用。没有它,RecyclerView 窗口小部件将无法有效地呈现列表项。
现在,您需要一个视图持有者,它包含TextView 您在上一步中创建的两个小部件。因此,创建一个扩展RecyclerView.ViewHolder 类的新类,并初始化对其中的小部件的引用。这是如何做:
class MyViewHolder(view: View)
: RecyclerView.ViewHolder(view) {
val name: TextView = view.list_item_name
val phone: TextView = view.list_item_phone
// More code here
}
此外,RecyclerView Selection插件需要一种可以调用以唯一标识所选列表项的方法。理想情况下,此方法属于视图持有者本身。此外,它必须返回ItemDetailsLookup.ItemDetails 类的实例。
‘肆’ 安卓怎么自定义listview视屏
创建一个android项目并在布局文件中加入一个ListView控件,
定义一个VO类User用于存放一些数据
新建一个列表项的内容布局,这里每一项都会有一个小图片,两个文本
新建一个数据适配器类MyDataAdapter继承自ArrayAdapter并做如图的构造器:
到网络图片上去搜一些小图片,放到图中的res/drawable目录下
要对ListView的列表显示项目进行自定义,就要重写适配器类的onView方法,如图:
在主界面初始化一个用户列表,并设置ListView的适配器为我们自定义的适配器
在genimotion模拟器里面运行一把,效果如图:
‘伍’ 华为手机app内购买项目怎么开启
内购买项目关闭方法:
1、首先我们打开主屏上的“设置”应用,如图所示
6、在打开了访问限制以后,以允许一栏下方找到“App 内购买项目”选项,点击关闭开关就好了。
‘陆’ 如何在系统settings里添加设置选项
目的:在通话设置菜单下,添加一dect设置菜单,里面再添加一checkBOxPreference
来使能硬件模块。
-------------------------
目前做的项目,需要在系统settings里面添加一选项来使能硬件模块,里面涉及到的preference知识,请网上了解,这里记录下方法。
1,settings 应用一般在 目录:\packages\apps\Settings,我们先找到通话设置的布局位置,看看它在那个包路径下,进入\packages\apps\Settings\res\xml,打开settings.xml文件:
java代码
<com.android.settings.IconPreferenceScreen
android:key="call_settings"
settings:icon="@drawable/ic_settings_call"
android:title="@string/call_settings_title">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting" />
</com.android.settings.IconPreferenceScreen>
<com.android.settings.IconPreferenceScreen
android:key="call_settings"
settings:icon="@drawable/ic_settings_call"
android:title="@string/call_settings_title">
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting" />
</com.android.settings.IconPreferenceScreen>
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.CallFeaturesSetting"
targetPackage:表示包名,根据此我们可以找到通话设置的路径。
targetClass:表示此布局文件被那个类所引用,根据此类,我们可以知道在那个文件里面管理我们的通话设置功能。 www.55zm.com
2.根据包名,我们可以看到在\packages\apps\Phone 目录下,进入\res\xml目录下
找到通话布局文件:call_feature_setting.xml,根据类名,很容易找到布局文件。
里面内容如下:
Java代码
<PreferenceCategory android:key="button_misc_category_key"
android:title="@string/other_settings"
android:persistent="false" />
<!-- Dect settings -->
<PreferenceScreen
android:key="dect_settings"
android:title="@string/dect_mole_title"
android:summary="@string/dect_mole_title" >
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.DectSettings" />
</PreferenceScreen>
<CheckBoxPreference
android:key="button_auto_retry_key"
android:title="@string/auto_retry_mode_title"
android:persistent="false"
android:summary="@string/auto_retry_mode_summary"/>
<PreferenceCategory android:key="button_misc_category_key"
android:title="@string/other_settings"
android:persistent="false" />
<!-- Dect settings -->
<PreferenceScreen
android:key="dect_settings"
android:title="@string/dect_mole_title"
android:summary="@string/dect_mole_title" >
<intent
android:action="android.intent.action.MAIN"
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.DectSettings" />
</PreferenceScreen>
<CheckBoxPreference
android:key="button_auto_retry_key"
android:title="@string/auto_retry_mode_title"
android:persistent="false"
android:summary="@string/auto_retry_mode_summary"/>
Dect setting 就是新添加进入的设置菜单,我们的原则尽量不大量修改,所以添加一个PreferenceScreen,新增一个类文件来管理DECt菜单选项。
android:targetPackage="com.android.phone"
android:targetClass="com.android.phone.DectSettings"
我们指明了包名,类名后,因这是个activity,所以我们需要到Phone目录下修改
AndroidManifest.xml文件,指明启动的activity的类名.
Java代码
<activity android:name="CdmaCallOptions"
android:label="@string/cdma_options">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<!-- dect activity -->
<activity android:name="DectSettings"
android:label="@string/dect_mole_title">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<activity android:name="CdmaCallOptions"
android:label="@string/cdma_options">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
<!-- dect activity -->
<activity android:name="DectSettings"
android:label="@string/dect_mole_title">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
3.修改好后,我们必须在此activity里添加preference布局文件。
在此目录Phone\res\xml下,新增dect_settings.xml
Java代码
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/dect_mole_title">
<CheckBoxPreference
android:key="button_dect_mole_key"
android:title="@string/dect_mole_title"
android:defaultValue="true"
android:summaryOn="@string/dect_mole_start"
android:summaryOff="@string/dect_mole_stop"
/>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/dect_mole_title">
<CheckBoxPreference
android:key="button_dect_mole_key"
android:title="@string/dect_mole_title"
android:defaultValue="true"
android:summaryOn="@string/dect_mole_start"
android:summaryOff="@string/dect_mole_stop"
/>
</PreferenceScreen>
好了,总体布局已经完成
4.在\packages\apps\Phone\src\com\android\phone目录下
新增DectSettings.java文件
加载布局文件:
//dect xml
addPreferencesFromResource(R.xml.dect_settings);
里面涉及到的MidPhoneServce服务,是自己添加的,主要通过此服务的AIDL接口跟硬件打交道。想了解系统服务,请网上查找资料。
源码如下:
Java代码
package com.android.phone;
import android.content.DialogInterface;
import android.os.AsyncResult;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.content.Context;
import com.android.phone.R;
import android.os.IMidPhoneService;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.provider.Settings;
public class DectSettings extends PreferenceActivity {
private static final String TAG = "DectSettings";
private static final String BUTTON_DECT_KEY = "button_dect_mole_key";
private CheckBoxPreference mButtonDect;
public IMidPhoneService midphoneservice = null;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
//dect xml
addPreferencesFromResource(R.xml.dect_settings);
mButtonDect = (CheckBoxPreference)findPreference(BUTTON_DECT_KEY);
mButtonDect.setPersistent(false);
if(mButtonDect != null) {
int dect_state = Settings.System.getInt(
getContentResolver(),Settings.System.DECT_SAVED_STATE, 1);
mButtonDect.setChecked( dect_state!= 0);
Settings.System.putInt(getContentResolver(),
Settings.System.DECT_SAVED_STATE,dect_state);
Log.e(TAG,"settings:------------->" + dect_state);
}
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mButtonDect ) {
int dect = mButtonDect.isChecked() ? 1 : 0;
boolean state;
if(dect == 1)
state = true;
else
state = false;
try{
midphoneservice = IMidPhoneService.Stub.asInterface(ServiceManager.getService("midphone"));
Settings.System.putInt(getContentResolver(),
Settings.System.DECT_SAVED_STATE,dect);
midphoneservice.setDectEnabled(state);
Log.e(TAG,"settings:------------->" + dect);
} catch (RemoteException e) {
e.printStackTrace();
}
return true;
}
return false;
}
@Override
protected void onResume() {
super.onResume();
if (mButtonDect != null) {
mButtonDect.setChecked(Settings.System.getInt(
getContentResolver(),