小编SMa*_*diS的帖子

将变形动画从箭头反转为复选标记

我试图实现变形效果,当用户点击myButton时,ImageView内的图像应该从箭头变为复选标记.当他再次点击它时,该过程应该反转:复选标记应变为箭头.

这就是我所做的:

animated_vector.xml:

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/vector_upvote">

    <target
        android:name="rotationGroup"
        android:animation="@anim/rotate_a_to_b" />

    <target
        android:name="upvote"
        android:animation="@animator/animator_upvote_to_checkmark" />
</animated-vector>
Run Code Online (Sandbox Code Playgroud)

animator_upvote_to_checkmark.xml:

<objectAnimator
    android:duration="250"
    android:propertyName="pathData"
    android:valueFrom="@string/svg_upvote"
    android:valueTo="@string/svg_checkmark"
    android:valueType="pathType"
    android:repeatMode="reverse" />
Run Code Online (Sandbox Code Playgroud)

这就是我播放动画的方式:

            Drawable drawable = upVote.getDrawable();
            if (drawable instanceof Animatable) {

                ((Animatable) drawable).start();
            }
Run Code Online (Sandbox Code Playgroud)

这会将箭头变为复选标记,如何反转过程?

android android-animation android-vectordrawable

15
推荐指数
2
解决办法
7341
查看次数

仅限小工具应用:未找到默认活动

我正在创建一个仅限widget的应用程序.

该项目是旧的SDK版本,没关系.

现在,当我下载最新的Android Studio软件包时,它没有运行我的appilcation,它说:

Error running app: Default Activity not found
Run Code Online (Sandbox Code Playgroud)

但我不想要任何活动.我只想要一个简单的小部件,而不是任何活动.

我知道很多人都问过这个问题,但是相信我,他们没有得到我的问题的答案.

ps:如果我通过使用以下代码添加一个活动并使其成为默认活动,它运行正常,但正如我所说,我不想要任何默认活动.有什么办法吗?

<activity
    android:name=".MainActivity"
    android:label="MyAppName"             >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.PerCalendar.perc"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
         <receiver android:name=".WidgetProvider" >
            <intent-filter>
                <!-- This widget provider receives broadcast with following action name or simply onUpdate of AppWidgetProvider is called -->
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <!-- linking up xml file of appwidget-provider …
Run Code Online (Sandbox Code Playgroud)

widget

11
推荐指数
1
解决办法
3892
查看次数

<animated-vector>需要API级别21(当前最小值为15)

现在提到[这里] [1],新的支持库现在支持动画向量,以前只支持API 21+.我将支持库升级到最新版本.

但是Android Studio仍然给我一个警告:动画矢量需要API级别21(当前最小值为15).

我做了以下事情:

我在build.gradle中添加了以下代码:

defaultConfig {
    generatedDensities = []

}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
    additionalParameters "--no-version-vectors"
}
Run Code Online (Sandbox Code Playgroud)

所以现在我的build.gradle文件如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
    applicationId "com.example.mahdi.askhow"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    generatedDensities = []

}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
    additionalParameters "--no-version-vectors"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' …
Run Code Online (Sandbox Code Playgroud)

android

10
推荐指数
1
解决办法
6528
查看次数

listView.setAdapter这么迟钝吗?

我有三个可滑动的标签。在第一个标签中,我有一个包含1000多个项目的列表视图。

我试图使用Asynctask和Runnable来填充列表,但我对此没有任何问题。

问题是当我尝试将适配器分配给listview时。我注意到无论适配器中有多少项,无论是1还是1000,当它尝试执行操作时:listView.setAdapter(adapter),它会跳过30帧左右...

由于在第一个选项卡中使用了listView.setAdapter(adapter),因此每当用户尝试进入该选项卡时,UI都会冻结数毫秒。虽然这不是一个严重的问题,但我不喜欢它。

问题是:当我们调用listView.setAdapter(adapter)时,UI冻结几毫秒并跳过一些帧是否正常?反正没有解决此问题?

我清楚吗?

    Carpet_handler ch; // my db handler
ListView listview;

public ArrayList<CarpetGen> carpetGens;
CarpetAdapter adapter;
boolean loadingMore=false;
int offset;
Context ctx;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_first_page_customers, container, false);
    ch=new Carpet_handler(getActivity()); // db handler
    listview = (ListView) rootView.findViewById(R.id.listView2);
    ctx=this.getActivity();
    carpetGens = new ArrayList<CarpetGen>();
    offset=0;
    adapter = new CarpetAdapter(getActivity(), R.layout.row, carpetGens);



    listview.setAdapter(adapter); // adapter is empty first time, runnable fills it
    listview.setOnItemClickListener(myClickListener);



    //Here is where the magic happens
    listview.setOnScrollListener(new …
Run Code Online (Sandbox Code Playgroud)

android listview

5
推荐指数
1
解决办法
1231
查看次数

将recyclerview项目限制为仅10,而不使用过滤器进行分页

我正在使用带有普通TextView的283项的Recycler View来过滤列表.

我想一直只显示10条记录.

我不能使用getCount(或GetItemCount)因为当我过滤列表它给我IndexOutOfBoundsExceptions时,有没有其他方法可以做到这一点?

public class RealmAutoCompleteAdapter extends RecyclerView.Adapter<RealmAutoCompleteAdapter.ProductViewHolder>  {
Realm realm;

RealmChangeListener<RealmResults<FieldsItem>> realmChangeListener;
RealmResults<FieldsItem> items;
String searchTerm;

public RealmAutoCompleteAdapter(Realm realm, RealmResults<FieldsItem> items) {
    this.realm = realm;
    this.realmChangeListener = new RealmChangeListener<RealmResults<FieldsItem>>() {
        @Override
        public void onChange(RealmResults<FieldsItem> results) {
            notifyDataSetChanged();
        }
    };
    this.items = items;
    items.addChangeListener(realmChangeListener);
}

@Override
public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    return new ProductViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.autocomplete_row, parent, false));
}

@Override
public void onBindViewHolder(ProductViewHolder holder, int position) {
    FieldsItem item = items.get(position);
    holder.title.setText(item.getTitle());
}

public void updateInput(String input) {
    this.searchTerm …
Run Code Online (Sandbox Code Playgroud)

android realm android-recyclerview

1
推荐指数
1
解决办法
3241
查看次数